如何在tkinter中使用destroy()方法处理我的代码?

时间:2012-11-30 18:00:35

标签: python tkinter destroy

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()

如何让我的功能近距离工作?

2 个答案:

答案 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()