我正在使用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
答案 0 :(得分:2)
是 - 您必须创建一个新的builder
对象并重新加载Glade文件。一个builder
对象创建一个对话框,如果你销毁它,那么它就消失了。
我不一定认为隐藏和显示对话框是一种黑客攻击。如果记忆是一个严重的问题,你可能想要破坏并重新创建,但除此之外我认为它没有多大区别。