我有class Duplicates
检查40个字以内的重复项。
我有class Window
创建并运行主窗口,我发布结果。
我有一个class popWindow
,在询问用户如何处理可能的双重内容时会创建一个Toplevel窗口。
我的问题是在提交选项后关闭popWindow
。
我实际运行的版本并发布一个aswer(带有标记重复的文本)使用quit来终止窗口(意味着弹出窗口仍在那里)或者只是有多个弹出窗口,直到你完成。 / p>
class Duplicates:
def markWord(self):
self.appendMarkedWord(self.word)
self.checked.append(self.word)
self.pop.topLevel_exit()
return ""
class popUpWindow:
temp = Button( self, font = 8,
text = "Allowed this run only",
command = app.newFile.markWord
)
temp.place( x = 178,
y = 55
)
如果我改为使用.destroy()
窗口关闭,但程序停止运行,那就更糟了。
我如何解决此问题,以便关闭窗口但仍然继续运行程序?
好的,经过许多小时后,似乎真正的问题是destroy()没有停止我的popUpWindow.mainloop()所以我现在已经改变了我的退出代码,先做quit()然后再做destroy()。这不是我所看到的例子,在我看来,toplevel mainloop上的destroy()不会终止它(destroy()在我的root.mainloop上工作正常)。
def topLevel_exit(self):
self.pop.quit()
self.pop.destroy()
答案 0 :(得分:3)
如果在顶层窗口上调用destroy()
,则不会停止应用程序运行。如果您的申请停止,您的代码必须有更多内容告诉我们您的申请。毫无疑问,摆脱弹出窗口的正确方法是在destroy
的实例上调用Toplevel
。
答案 1 :(得分:0)
隐藏窗口并保持程序运行的方法是在窗口上使用.withdraw()
,并.reiconify()
将其取回(如果需要)。或者您可以在.destroy()
窗口中使用Toplevel
。如果您需要示例,请询问,希望这对您有所帮助。
答案 2 :(得分:0)
我的解决方案是:
def topLevel_exit(self):
self.top.quit()
self.top.destroy()
我不知道这是否是普通的实践,但是我必须要做的事情因为毁灭并没有阻止我的top.mainloop()
答案 3 :(得分:0)
如果使用topLevel窗口,self.pop.destroy()
应该仍然可以正常使用mainloop()
否则请使用quit()
或两者,但在我看来,我更喜欢destroy()