从PyGTK中的GObject类派生时,您可以使用__gproperties__
dict和do_get_property
/ do_set_property
方法定义GO中的GObject属性,如@property
/ notify::property-name
方法所述。 3}}。请注意,这是在我们在Python中使用@property
装饰器之前编写的。
GObject属性的优势在于,只要属性发生变化,您就可以连接到对象的{{1}}信号以接收通知。除此之外,是否有充分的理由使用GObject属性而不是Python的{{1}}装饰器?
答案 0 :(得分:1)
除此之外,还有什么理由使用GObject属性而不是Python的@property装饰器吗?
不是真的。它们有很多样板,所以除非我需要notify
信号,否则我会在Python中编写我需要的任何内容。
话虽如此,我认为“我不需要这个属性的通知”然后意识到“实际上,我根本不需要这个属性,这是相当普遍的。”
答案 1 :(得分:1)
为什么不使用它们?随着simplified version提供 Python绑定,定义GObject属性并没有那么不同 定义Python属性。
话虽如此,除了之外还有其他一些优点 通知。我过去使用过的那个是财产 在gtk.Builder文件中设置。例如,在您的UI文件中,
<object class="GtkImage" id="image">
<property name="stock">gtk-missing-image</property>
</object>
在构造时在Image对象上设置stock
属性
Builder类;如果您使用GObject属性
您的自定义小部件,您也可以利用它。这种行为是平等的
随着property binding support in Glade的出现更有用。
另一个潜在优势是GObject属性的最小/最大限制和 整数和浮点数的默认值,有时可用于 与UI相关的属性。