【问题标题】:Custom widget properties in GTK3GTK3 中的自定义小部件属性
【发布时间】:2018-01-22 23:35:31
【问题描述】:

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

class MyWidget(Gtk.Grid):
    pass

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

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

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

【问题讨论】:

    标签: python python-3.x gtk3


    【解决方案1】:

    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
    

    【讨论】:

    • 问几个问题,有没有办法访问__gproperties__ 字典中定义的属性默认值? GObject.type_register(MyWidget) 是否必要,因为没有它它仍然可以工作?而且,如果您的属性不需要界限,您会使用什么来表示最小值/最大值?
    • @eugenhu 答案大修。
    • 哦哇,好多了,我在谷歌上搜索类似的东西,干杯。
    猜你喜欢
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    相关资源
    最近更新 更多