我正在使用Glade编写一个带有对话框的python GUI。在
如果我没有使用Glade,我会使用一个类来创建一个对话框窗口(dialag),运行它(对话.运行),执行任何操作,然后将其移除(对话框.销毁). 当我再次需要对话框时,我会重新实例化它。在
格莱德把一个活动扳手放在这里。调用后Gtk建造者,我可以用类似于:
dialog = builder.get_object("dialog")
response = dialog.run()
#do stuff
dialog.destroy()
我更喜欢运行、使用、销毁的工作方式,因为它会将它从内存中删除。在
然而,使用Glade,在我完成上述操作之后,我不能再次让它工作,因为调用已经被破坏了,我不知道如何让Glade重新激活它。在
在我以前写的程序中,我做过这样的事情:
^{pr2}$当我再次需要它时,我会做一个:
dialog.show()
response = dialog.run()
# do stuff
dialog.hide()
为了绕过这个限制,但我对这种方式并不满意,我觉得这有点麻烦(我想对于格莱德来说,一切都是从一开始就创造出来的)。有没有办法让gladelibs重新实例化一个对话框,而不是做所有这些显示和隐藏?在
谢谢
纳尼
是的-您必须创建一个新的
builder
对象并重新加载Glade文件。一个builder
对象创建了一个对话框,如果销毁了它,那么它就不见了。在我不认为隐藏和显示对话框是一种黑客行为。如果记忆是一个严重的问题,你可能会想要破坏和重新创造,但除此之外,我不认为这有多大区别。在
相关问题 更多 >
编程相关推荐