如何在python运行,销毁和重用中使用Glade使用对话框

时间:2012-12-09 05:45:28

标签: python dialog gtk builder glade

我正在使用Glade编写带有对话框的python GUI。

如果我没有使用Glade,我会使用一个类创建一个对话框窗口(dialag),运行它(dialog.run),做它做的任何事情,然后删除它(dialog.destroy)。然后,当我再次需要对话框时,我会重新实例化它。

格莱德在这里放了一把扳手。在调用Gtk.Builder之后,我可以使用类似的东西获取对象:

dialog = builder.get_object("dialog")
response = dialog.run()
#do stuff
dialog.destroy()

我更喜欢运行,使用,破坏工作方式,因为它将其从内存中删除。

然而,使用Glade,在我执行上述操作后,我无法再次使用它,因为调用已被破坏,我不知道如何让Glade重新实现它。

在我编写的过去的程序中,我已经完成了这个:

dialog = builder.get_object('dialog')
response = dialog.run()
# use it
dialog.hide()

当我再次需要时,我会做:

dialog.show()
response = dialog.run()
# do stuff
dialog.hide()

为了解决这个限制,但我对这种做法并不满意,感觉这有点像黑客(我猜Glade,一切都是在开始时创建的)。有没有办法让Glade库重新实例化一个对话框而不是完成所有这些显示和隐藏?

谢谢,

Narnie

1 个答案:

答案 0 :(得分:2)

是 - 您必须创建一个新的builder对象并重新加载Glade文件。一个builder对象创建一个对话框,如果你销毁它,那么它就消失了。

我不一定认为隐藏和显示对话框是一种黑客攻击。如果记忆是一个严重的问题,你可能想要破坏并重新创建,但除此之外我认为它没有多大区别。