Skip to main content
 首页 » 编程设计

python之GTK 数据绑定(bind)

2025年05月04日11xiaohuochai

在 GTK(准确地说是 pygtk)中是否有任何数据绑定(bind)机制(如在 WPF 中)? 我想摆脱这个丑陋的代码:

 def set_foo(self,txt): 
    return self.gtkBuilder.get_object("foo").set_text(txt) 
 
 def get_foo(self): 
    return self.gtkBuilder.get_object("foo").get_text() 

并有类似的东西:

self.foo = "text" 
self.gtkBuilder.get_object("foo").data_bind(self.foo) 

如果我更改了 self.foo,我的 gtk 对象 “foo” 也会更改,反之亦然。

请您参考如下方法:

你可以使用属性:

class X(object): 
    ... 
    def _make_property(name): 
        def getter(self): 
            return self.gtkBuilder.get_object(name).get_text() 
        def setter(self, text): 
            return self.gtkBuilder.get_object(name).set_text(text) 
        return property(getter, setter) 
 
    foo = _make_property("foo") 

这与 GTK 完全无关。这只是定义属性的 Python 方式。