Reputation: 17532
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!
Upvotes: 7
Views: 9072
Reputation: 8758
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.
Upvotes: 12