Привязка данных GTK - PullRequest
       13

Привязка данных GTK

2 голосов
/ 26 марта 2012

Есть ли какой-нибудь механизм для привязки данных (как в WPF) в GTK (если быть точным pygtk)?Я хочу избавиться от этого уродливого кода:

 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" изменился бытоже и наоборот.

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Вы можете использовать свойства:

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 для определения свойств.

0 голосов
/ 07 апреля 2012

GTK Виджеты используют свойства GObject, которые могут быть связаны .К сожалению, это, вероятно, не будет добавлено в устаревший PyGTK.Более новый GObject-Introspection имеет его, но только в неработающем виде, если у вас нет самой последней версии.

На данный момент вам лучше откатить свою собственную, например Sven, или использовать библиотеку, например gtkmvc * 1006.*.

...