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?
destroy() method in Tkinter | PythonThis method can be used with after() method. As you may observe, in above code that the command that is passed in button-2 is to destroy button-1 so as soon as you press button-2, button-2 will get destroyed.
Which is the correct syntax of destroying in tkinter? tkinter. Button(). destroy() The code create the text() through button and then destroy and created new buttom compose.
If we want to clear the frame content or delete all the widgets inside the frame, we can use the destroy() method. This method can be invoked by targeting the children of the frame using winfo_children().
The destroy() method in Tkinter destroys a widget. It is useful in controlling the behavior of various widgets which depend on each other. Also when a process is complete by some user action we need to destroy the GUI components to free the memory as well as clear the screen. The destroy() method achieves all this.
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()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With