Python GTK数据绑定

Python GTK数据绑定,python,data-binding,gtk,pygtk,Python,Data Binding,Gtk,Pygtk,GTK(确切地说是pygtk)中是否有任何数据绑定机制(如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.gtkBuilde

GTK(确切地说是pygtk)中是否有任何数据绑定机制(如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定义属性的方法。

GTK小部件使用GObject属性,而GObject属性。不幸的是,这可能不会添加到不推荐的PyGTK中。新的GObject内省有它,但只有在破碎的形式,除非你有一个非常新的版本

现在,你最好像Sven一样滚动你自己的,或者使用像Sven一样的库