【发布时间】:2012-11-26 22:12:59
【问题描述】:
我正在使用 Glade 编写一个带有对话框的 python GUI。
如果我不使用 Glade,我会使用一个类来创建一个对话窗口 (dialag),运行它 (dialog.run),做任何事情,然后删除它 (dialog.destroy)。然后,当我再次需要该对话框时,我会重新实例化它。
Glade 在其中放了一把活动扳手。调用 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()
为了绕过这个限制,但我对这种做法并不满意,感觉它有点像 hack(我猜对于 Glade,一切都是从一开始就创建的)。有没有办法让 Glade 库重新实例化一个对话框,而不是进行所有这些显示和隐藏?
谢谢,
纳尼
【问题讨论】:
标签: python dialog gtk builder glade