Python GTK数据绑定
GTK(确切地说是pygtk)中是否有任何数据绑定机制(如WPF)? 我想摆脱这个丑陋的代码: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
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一样的库