【问题标题】: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()
      

      【讨论】:

        猜你喜欢
        • 2021-09-26
        • 2020-10-06
        • 2021-12-05
        • 2021-02-27
        • 1970-01-01
        • 1970-01-01
        • 2022-11-15
        • 1970-01-01
        • 2018-01-10
        相关资源
        最近更新 更多