我有一个像这样的小部件:
class MyWidget(Gtk.Grid):
pass
我需要为它添加一个自定义属性,以便可以这样访问它:
my_widget = MyWidget()
my_widget.props.my_custom_property = 12
我可以在MyWidget
中使用属性装饰器并像my_widget.my_custom_property = 12
一样访问它,但我希望小部件的界面与其他库小部件保持一致。
答案 0 :(得分:3)
Gtk小部件基于GObject。有subclassing和creating properties的示例,这些示例很容易组合在一起:
class MyWidget(Gtk.Grid):
@GObject.Property
def my_custom_property(self):
return self._my_custom_property
@my_custom_property.setter
def my_custom_property(self, value):
self._my_custom_property = value
您的课程现在可以像任何其他GObject一样使用:
my_widget = MyWidget()
my_widget.props.my_custom_property = 12
my_widget.get_property('my-custom-property')) # 12