Вы должны назвать методы как do_virtual_method
:
from gi.repository import Gtk
class Patch(Gtk.DrawingArea):
def __init__(self):
super(Patch,self).__init__()
def do_get_preferred_width(self):
print("test")
return 100, 100
def do_get_preferred_height(self):
print("test")
return 100, 100
win = Gtk.Window()
win.add(Patch())
win.connect('destroy', Gtk.main_quit)
win.show_all()
Gtk.main()
Обратите внимание, что вы также должны возвращать значения, которые виртуальный метод требует от вас вернуть, иначе вы получите загадочную ошибку.