I am trying to implement Heigh-for-width Geometry Management in GTK with Python for my custom widget. My widget is a subclass of Gtk.DrawingArea and draws some parts of the image.
As I understand it, GTK Docs (link above), I have to implement the following 4 methods:
- GtkWidgetClass.get_preferred_width ()
- GtkWidgetClass.get_preferred_height ()
- GtkWidgetClass.get_preferred_height_for_width ()
- GtkWidgetClass.get_preferred_width_for_height ()
Now I wonder where to implement this in Python.
I tried this:
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")
But methods are not called. In C, you define functions and set them for the widget as follows:
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; }
How is this done in Python?
source share