Skip to main content
 首页 » 编程设计

python之在 PyGTK/GtkBuilder 中处理多个窗口

2025年05月04日27leader

如何将多个不同的窗口/对话框存储在一个 GtkBuilder 文件中,然后将这些窗口加载到不同的类中(每个类对应一个不同的窗口)?例如,目前我正在做这样的事情:

def __init__(self): 
    self.builder = gtk.Builder() 
    self.builder.add_from_file('gtkbuilder.xml') 
    self.welcome_dialog = self.builder.get_object('welcome_dialog') 
    self.builder.connect_signals(self) 
    self.welcome_dialog.show() 

这确实生成了一个功能正常的软件,但它会发出各种警告,例如:

welcome_dialog.py:38: RuntimeWarning: missing handler 'on_contract_window_response' 
  self.builder.connect_signals(self) 

对于我在 Glade 中为所有其他窗口定义的每个信号处理程序。我想我想做的就是连接这个单一窗口/对话框的信号并忽略其他所有内容,但我不确定该怎么做。或者也许我做错了一些可怕的事情,我应该将每个窗口拆分成不同的 GtkBuilder 文件?或者在同一(初始)时间连接每个可能窗口的信号?

请您参考如下方法:

使用 gtk.Builder.add_from_file 将整个层次结构从您的文件添加到 Builder 对象,这就是您收到信号连接警告的原因; builder.connect_signals() 调用尝试连接一切。

相反,使用 gtk.Builder.add_objects_from_file选择您要在当前类中处理的单个顶级窗口或小部件。