PyGTK属性与python属性

时间:2011-05-11 12:58:15

标签: python properties pygtk gobject

从PyGTK中的GObject类派生时,您可以使用__gproperties__ dict和do_get_property / do_set_property方法定义GO中的GObject属性,如@property / notify::property-name方法所述。 3}}。请注意,这是在我们在Python中使用@property装饰器之前编写的。

GObject属性的优势在于,只要属性发生变化,您就可以连接到对象的{{1}}信号以接收通知。除此之外,是否有充分的理由使用GObject属性而不是Python的{{1}}装饰器?

2 个答案:

答案 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相关的属性。