【问题标题】:PyGTK properties versus python propertiesPyGTK 属性与 python 属性
【发布时间】:2011-08-23 07:20:41
【问题描述】:

从 PyGTK 中的 GObject 类派生时,您可以像在 C 中一样使用 __gproperties__ dict 和 do_get_property/do_set_property 方法定义 GObject 属性,如Sub-classing GObject in Python 中所述。请注意,这是在我们在 Python 中使用 @property 装饰器之前编写的。

GObject 属性的优点是您可以连接到对象的notify::property-name 信号,以便在属性更改时接收通知。除此之外,还有什么好的理由使用 GObject 属性而不是 Python 的 @property 装饰器?

【问题讨论】:

    标签: python properties pygtk gobject


    【解决方案1】:

    为什么不使用它们?使用simplified version 提供的 Python 绑定,定义 GObject 属性与 定义 Python 属性。

    话虽如此,除了 通知。我过去使用的是财产 在 gtk.Builder 文件中设置。例如,在您的 UI 文件中,

    <object class="GtkImage" id="image">
      <property name="stock">gtk-missing-image</property>
    </object>
    

    在由 Image 对象构造时设置 stock 属性 生成器类;如果您在中使用 GObject 属性 您的自定义小部件,您也可以利用这一点。这种行为将是均匀的 property binding support in Glade 的出现更有用。

    另一个潜在优势是 GObject 属性的最小/最大限制和 整数和浮点数的默认值,有时对 与 UI 相关的属性。

    【讨论】:

    • 我不知道简化版!感谢您指出这一点。
    【解决方案2】:

    除此之外,还有什么好的理由使用 GObject 属性而不是 Python 的 @property 装饰器?

    不是真的。它们有很多样板,所以除非我需要 notify 信号,否则我会用 Python 编写我需要的任何东西。

    话虽如此,我通常会认为“我不需要此属性的通知”,然后意识到“实际上,我根本不需要此属性。”

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 1970-01-01
      • 2011-03-09
      • 2013-10-15
      • 2011-11-29
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多