使用pygtk进行窗口管理

使用pygtk进行窗口管理,gtk,pygtk,glade,gtkbuilder,Gtk,Pygtk,Glade,Gtkbuilder,我对PyGTK和GTK Builder窗口有问题。这是我的代码的简化版本 class GUI: def __init__(self,parent): builder_file = "./ui/window.builder" self.builder = gtk.Builder() self.builder.add_from_file(builder_file) self.window = self.builder.get_object('main') s

我对PyGTK和GTK Builder窗口有问题。这是我的代码的简化版本

class GUI:
def __init__(self,parent):
    builder_file = "./ui/window.builder"
    self.builder = gtk.Builder()
    self.builder.add_from_file(builder_file)

    self.window = self.builder.get_object('main')
    self.builder.connect_signals( self )
    self.populate_window()
    self.window.show()

def populate_window(self):
    hbox = self.builder.get_object('hbox')
    hbox.pack_start( somewidgets )

def on_destroy(self):
    self.window.destroy()
gtk builder文件只包含一个带有水平包装盒的顶层窗口,并向销毁者发送信号。这看起来是可行的,窗口创建和填充都很好,但是如果我试图破坏已经填充了任何其他窗口小部件的窗口

我认为这是因为打包构建器文件中没有的新小部件的问题,所以pygtk不知道如何销毁它们,但我不确定

感谢您的帮助。

当窗口仍处于销毁状态时,将调用您的“销毁”处理程序,因此以下代码片段:

def on_destroy(self):
    self.window.destroy()
将生成无限递归调用。换句话说,你正在摧毁一些还没有被摧毁的东西

这与GtkBuilder或手工编码的小部件无关,但我怀疑我遗漏了什么,因为我不知道为什么需要将某些东西连接到GtkWindow::destroy。

使用
gtk.main\u quit()

def on_销毁(自): gtk.main_quit() def on_destroy(self): gtk.main_quit()