GTK3 中的自定义小部件属性

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,但我希望小部件的界面与其他库小部件保持一致。

Ara*_*Fey 5

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)