在 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 方式。
