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

我将如何使我的功能接近工作?

4

2 回答 2

11
GameBoard()

创建 的新实例GameBoard。所以:

GameBoard().destroy()

创建一个实例并调用destroy()它,这对现有实例没有影响。

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

def _close(self):
    self.destroy()

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

要完全关闭 UI,您可以调用self.master.destroy()或简单地调用self.quit()

def _close(self):
    self.quit()
于 2012-11-30T18:58:46.583 回答
4

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

IE

def _close(self):
    self.master.destroy()
于 2017-06-23T19:06:54.733 回答