eug*_*nhu 2 python python-3.x gtk3
我有一个像这样的小部件:
class MyWidget(Gtk.Grid):
pass
Run Code Online (Sandbox Code Playgroud)
我需要向其添加一个自定义属性,以便可以按如下方式访问它:
my_widget = MyWidget()
my_widget.props.my_custom_property = 12
Run Code Online (Sandbox Code Playgroud)
我可以使用属性装饰器并MyWidget像这样访问它my_widget.my_custom_property = 12,但我希望小部件的界面与其他库小部件保持一致。
Gtk 小部件基于GObject。有一些子类化和创建属性的示例,它们很容易组合在一起:
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
Run Code Online (Sandbox Code Playgroud)
您的类现在可以像任何其他 GObject 一样使用:
my_widget = MyWidget()
my_widget.props.my_custom_property = 12
my_widget.get_property('my-custom-property')) # 12
Run Code Online (Sandbox Code Playgroud)