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

Vic*_*Oza 6 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()
Run Code Online (Sandbox Code Playgroud)

我如何让我的功能接近工作?

Ano*_*ard 9

GameBoard()
Run Code Online (Sandbox Code Playgroud)

创建一个新的实例GameBoard.因此:

GameBoard().destroy()
Run Code Online (Sandbox Code Playgroud)

创建一个实例并对其进行调用destroy(),这对现有实例没有影响.

您希望访问方法中的当前实例,该实例_close()通过self以下方式完成:

def _close(self):
    self.destroy()
Run Code Online (Sandbox Code Playgroud)

但是,这只会破坏框架(及其子窗口,如按钮),而不是顶层窗口(主窗口).

要完全关闭用户界面,您可以致电self.master.destroy()或简单地self.quit():

def _close(self):
    self.quit()
Run Code Online (Sandbox Code Playgroud)


小智 5

self.master.destroy() 将关闭父进程和子进程(例如 IE)。self.destroy 将关闭子进程。我知道这是一篇旧文章,但我认为这些信息可能仍然适用于某人。

IE

def _close(self):
    self.master.destroy()
Run Code Online (Sandbox Code Playgroud)