Python 如何在我的自定义小部件中实现GtkOrientable

Python 如何在我的自定义小部件中实现GtkOrientable,python,python-3.x,gtk3,Python,Python 3.x,Gtk3,如何在我的自定义小部件中实现GtkOrientable,到目前为止我所做的是: class MyOwnWidget(Gtk.Orientable, Gtk.DrawingArea): ... 当我运行Gtk时抛出: /usr/lib/python3.4/site-packages/gi/types.py:194: Warning: Object class gtkmeter+GtkMeter doesn't implement property 'orientation' from i

如何在我的自定义小部件中实现GtkOrientable,到目前为止我所做的是:

class MyOwnWidget(Gtk.Orientable, Gtk.DrawingArea):
    ...
当我运行Gtk时抛出:

/usr/lib/python3.4/site-packages/gi/types.py:194: Warning: Object class gtkmeter+GtkMeter doesn't implement property 'orientation' from interface 'GtkOrientable'
_gobject.type_register(cls, namespace.get('__gtype_name__'))

那么,实现GtkOrientable的正确步骤是什么呢?

GtkOrientable要求在实现该接口的类上存在“orientation”属性。要在Python中执行此操作,可以使用GObject.Property:

from gi.repository import GObject
from gi.repository import Gtk

class MyOwnWidget(Gtk.DrawingArea, Gtk.Orientable):
    orientation = GObject.Property(type=Gtk.Orientation, default=Gtk.Orientation.VERTICAL)
还要注意继承的顺序,因为Gtk.Orientable是一个接口,它应该在您正在子分类的具体类之后。另见: