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()
如何让我的功能近距离工作?
答案 0 :(得分:9)
GameBoard()
创建GameBoard
的新实例。因此:
GameBoard().destroy()
创建新实例并在其上调用destroy()
,这对现有实例没有影响。
您希望通过_close()
访问self
方法中的当前实例:
def _close(self):
self.destroy()
但是,这只会破坏框架(及其子窗口,如按钮),而不是顶层窗口(主窗口)。
要完全关闭用户界面,您可以拨打self.master.destroy()
或简单地self.quit()
:
def _close(self):
self.quit()
答案 1 :(得分:3)
self.master.destroy()将关闭父进程和子进程(例如参见I.E.)。 self.destroy将关闭子进程。我知道这是一个旧帖子,但我认为这些信息可能仍适用于某人。
即
def _close(self):
self.master.destroy()