Toplevel in Tkinter: Prevent Two Windows from Opening
python, tkinter
Solution
The `withdraw()` method removes the window from the screen. The `iconify()` method minimizes the window, or turns it into an icon. The `deiconify()` method will redraw the window, and/or activate it.
If you choose `withdraw()`, make sure you've considered a new way to exit the program before testing. e.g.
from Tkinter import * # tkinter in Python 3
root = Tk()
root.withdraw()
top = Toplevel(root)
top.protocol("WM_DELETE_WINDOW", root.destroy)
but = Button(top, text='deiconify')
but['command'] = root.deiconify
but.pack()
root.mainloop()
The `protocol()` method can be used to register a function that will be called when the Toplevel window's close button is pressed. In this case we can use `destroy()` to exit.
Problem
Say I have some simple code, like this: ``` from Tkinter import * root = Tk() app = Toplevel(root) app.mainloop() ``` This opens two windows: the `Toplevel(root)` window and the `Tk()` window. Is it possible to avoid the `Tk()` window (`root`) from opening? If so, how? I only want the toplevel. I want this to happen because I am making a program that will have multiple windows opening, which are all `Toplevel`'s of the `root`. Thanks!