What I mean by this is can you make the program open the window more than once by putting the mainloop() function in a for loop or a while loop? It would probably look something like this:
for i in range(n):
window.mainloop()
Or this if we are using a while loop:
i = 0
while i < n:
window.mainloop()
When I try either of these methods, it just opens one window. Am I doing something wrong or is mainloop() a function that cannot be put in a loop? If that is the case, is there any other method?
Calling
mainloopmore than once can't open new windows.mainlooponly processes events, it doesn't create or recreate any windows.If you need multiple windows, the way to do that is to create instances of
Toplevelfor the second and subsequent windows. You then callmainloopexactly once and all of the windows will be visible assuming they've been set up to be visible.If you want to create multiple instances of the same window, the normal pattern is to create your app in a class that inherits from
Frame. You can then create as many windows as you want, and in each one you can create an instance of that frame.Here is an example of the technique:
It's important to note that if you delete the very first window, all of the other windows will be deleted. If you don't want that to happen, you can create and then hide the root window so that the user can only see the other windows. You'll then need to add some code to kill the root window when there are no longer any child windows.