我在使用的PyGTK和GTK生成器窗口的问题。这里是我的代码的简化版本。

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的助洗剂文件只包含具有水平包装盒和信号到销毁顶层窗口。这似乎工作,创建并填充就好了窗口,但如果我试图摧毁已被填充任何其他部件蟒蛇段错误的窗口。

我想这是一些问题与包装新的小部件都不在构建器文件,以便pygtk的不知道该怎么destory他们,但我不知道,但。

感谢您的帮助。

有帮助吗?

解决方案

您“消灭”处理程序被调用时,窗口是在尚未破坏,因此,此代码片断:

def on_destroy(self):
    self.window.destroy()

将产生一个无限递归调用。在其他方面,你正在摧毁的东西是还没有被破坏。

这无关与GtkBuilder或手工编码的小部件,但我怀疑我失去了一些东西,因为我不知道为什么你需要连接东西的GtkWindow ::摧毁。

其他提示

使用gtk.main_quit()

def on_destroy(self):
    gtk.main_quit()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top