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

nar*_*nie 5 python gtk dialog glade builder

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

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

格莱德放了一把猴子扳手.在调用Gtk.Builder之后,我可以使用以下内容获取对象:

dialog = builder.get_object("dialog")
response = dialog.run()
#do stuff
dialog.destroy()
Run Code Online (Sandbox Code Playgroud)

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

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

在我写过的过去的程序中,我做了一个:

dialog = builder.get_object('dialog')
response = dialog.run()
# use it
dialog.hide()
Run Code Online (Sandbox Code Playgroud)

当我再次需要它时,我会做一个:

dialog.show()
response = dialog.run()
# do stuff
dialog.hide()
Run Code Online (Sandbox Code Playgroud)

为了解决这个限制,但是我并不满足于这样做这种方式感觉它有点像黑客(而且我想与Glade一样,一切都是在开始时创建的).有没有办法让Glade库重新实例化一个对话框,而不是做所有这些显示和隐藏?

谢谢,

Narnie

pto*_*ato 2

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

我不一定认为隐藏和显示对话框是一种黑客行为。如果内存是一个严重问题,您可能想要销毁并重新创建,但除此之外,我认为这没有多大区别。