GTK3中的自定义小部件属性

时间:2018-01-22 13:23:22

标签: python python-3.x gtk3

我有一个像这样的小部件:

class MyWidget(Gtk.Grid):
    pass

我需要为它添加一个自定义属性,以便可以这样访问它:

my_widget = MyWidget()    
my_widget.props.my_custom_property = 12

我可以在MyWidget中使用属性装饰器并像my_widget.my_custom_property = 12一样访问它,但我希望小部件的界面与其他库小部件保持一致。

1 个答案:

答案 0 :(得分:3)

Gtk小部件基于GObject。有subclassingcreating 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