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()
How would I make my function for close to work?
GameBoard()
creates a new instance of GameBoard
. Therefore:
GameBoard().destroy()
creates a new instance and calls destroy()
on it which has no effect on the existing instance.
You want access the current instance in your _close()
method which is done through self
:
def _close(self):
self.destroy()
However, this only destroys the frame (and its child windows, like the button), not the top level window (master).
To completely close the UI, you could call self.master.destroy()
or simply self.quit()
:
def _close(self):
self.quit()