我正在尝试使用Python在GTK中实现高度与宽度的几何管理,以用于我的自定义小部件。我的小部件是从
根据我理解的GTK文档(上面的链接),我需要实现以下4个方法:
我尝试了以下代码:
但是这些方法没有被调用。在 C 语言中,您需要像下面这样定义函数并将其设置给小部件:
这在Python中如何实现?
Gtk.DrawingArea
继承而来,并绘制图像的某些部分。根据我理解的GTK文档(上面的链接),我需要实现以下4个方法:
- GtkWidgetClass.get_preferred_width()
- GtkWidgetClass.get_preferred_height()
- GtkWidgetClass.get_preferred_height_for_width()
- GtkWidgetClass.get_preferred_width_for_height()
我尝试了以下代码:
from gi.repository import Gtk
class Patch(Gtk.DrawingArea):
def __init__(self, model, image, position):
super(Patch,self).__init__()
#…
def get_preferred_width(self, *args, **kargs):
print("test")
def get_preferred_height(self, *args, **kargs):
print("test")
def get_preferred_width_for_height(self, *args, **kargs):
print("test")
def get_preferred_height_for_width(self, *args, **kargs):
print("test")
但是这些方法没有被调用。在 C 语言中,您需要像下面这样定义函数并将其设置给小部件:
static void
my_widget_get_preferred_height (GtkWidget *widget, gint *minimal_height,
gint *natural_height)
{
/* ... */
}
/* ... */
static void
my_widget_class_init (MyWidgetClass *class)
{
/* ... */
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
widget_class->get_preferred_height = my_widget_get_preferred_height;
/* ... */
}
这在Python中如何实现?