【发布时间】:2011-07-13 16:41:18
【问题描述】:
gtk.Builder 能够识别 GUI(在 XML 文件中描述)可以发出的所有信号,并使用 connect_signals() 方法自动 匹配信号和处理程序。示例:
class Gui(gobject.GObject):
def __init__(self):
self.gui_file = "../data/gui.xml"
builder = gtk.Builder()
builder.add_from_file(self.gui_file)
builder.connect_signals(self)
def on_whatever_gui_event(self, widget, data=None):
...
在我的应用程序中,我有其他由非 GUI 对象生成的信号(它是我的模型 [如 MVC 模式中],当其内部状态发生变化时会发出信号),但需要由 GUI 处理。
我正在尝试找到一种方法,可以让我自动连接到 Gui 实例也我的自定义信号。换句话说,我试图不必须手动将每个信号连接到它的处理程序。理想情况下,最终代码应如下所示:
class Gui(gobject.GObject):
def __init__(self, model_instance):
self.gui_file = "../data/gui.xml"
builder = gtk.Builder()
builder.add_from_file(self.gui_file)
builder.add_signals_from_my_object(model_instance)
builder.connect_signals(self)
def on_whatever_gui_event(self, widget, data=None):
...
def on_whatever_model_event(self, widget, data=None):
...
是否有标准的 [py]GTK 方法来实现这一点,还是我必须编写自己的 gtk.Builder 子类?
提前感谢您的宝贵时间!
【问题讨论】:
标签: python user-interface gtk pygtk introspection