The book I'm reading about using Tkinter only does this when creating the 
top-level window:

app = Application()
app.mainloop()

and of course the Application class has subclassed the tkinter.Frame class.

However, in the Python documentation, I see this:

root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()

Is it necessary to explicitly call Tk(), then pass that result as an argument 
for the Application call? Is it also necessary to call destroy() on the root 
frame?

I tried the above and I got the following error:

Traceback (most recent call last):
  File "C:\Users\John\Desktop\gui.py", line 12, in <module>
    root.destroy()
  File "C:\Python32\lib\tkinter\__init__.py", line 1714, in destroy
    self.tk.call('destroy', self._w)
_tkinter.TclError: can't invoke "destroy" command:  application has been 
destroyed

So apparently closing the window with the X button (on Windows) implicitly 
calls the destroy() method of the root frame. If that's the case, why does the 
documentation explicitly call it?

Furthermore, I pasted the exact example from the documentation into IDLE and 
ran it, and I also go the same error, so the example in the documentation 
doesn't even work.

So is it sufficient simply to create an Application instance, use mainloop, and 
then handle the closing of the window elsewhere in the program (such as a 
widget calling the destroy method on-click, or just letting the X button do it)?

Thanks!
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to