【问题标题】:How would I make destroy() method in tkinter work with my code?如何使 tkinter 中的 destroy() 方法与我的代码一起使用?
【发布时间】:2012-11-18 23:49:15
【问题描述】:
from tkinter import *
class GameBoard(Frame):
def __init__(self):
Frame.__init__(self)
self.master.title("test")
self.grid()
#button frame
self.__buttonPane = Frame(self)
self.__buttonPane.grid()
#buttons
self.__buttonA1 = Button(self.__buttonPane,text = "A1",command = self._close)
self.__buttonA1.grid()
def _close(self):
GameBoard().destroy()
def main():
GameBoard().mainloop()
main()
如何使我的功能接近工作?
【问题讨论】:
标签:
python
tkinter
destroy
【解决方案1】:
self.master.destroy() 将关闭父进程和子进程(例如,参见 I.E.)。 self.destroy 将关闭子进程。我知道这是一篇旧帖子,但我认为这些信息可能仍然适用于某人。
I.E.
def _close(self):
self.master.destroy()
【解决方案2】:
GameBoard()
创建GameBoard 的新实例。因此:
GameBoard().destroy()
创建一个new实例并在其上调用destroy(),这对现有实例没有影响。
您想在 _close() 方法中访问当前实例,该方法通过 self 完成:
def _close(self):
self.destroy()
但是,这只会破坏框架(及其子窗口,如按钮),而不是顶级窗口(主窗口)。
要完全关闭 UI,您可以调用 self.master.destroy() 或直接调用 self.quit():
def _close(self):
self.quit()