<[EMAIL PROTECTED]> wrote

The behavior I seek is that one and only one Toplevel window
gets generated no matter how many times the original Tkinter
button is pressed.

Here is a minimal example of what I think you want?

Does that help?

--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld

--------------------------------------------------
# TestTopLevel.py

from Tkinter import *


class MainWin(Frame):
   def __init__(self, parent, sub=None):
       Frame.__init__(self, parent)
       self.parent = parent
       Label(self, text="This is the main window").pack()
self.bShow = Button(self, text="Show Sub", command = self.doShow)
       self.bShow.pack()
       self.bQuit = Button(self, text="Quit", command = self.quit)
       self.bQuit.pack()
       self.sub = sub
       self.pack()

   def doShow(self):
      try: self.sub.deiconify()
      except:
          self.sub = SubWindow(self.parent)
          self.sub.withdraw()
          self.sub.deiconify()

class SubWindow(Toplevel):
   def __init__(self, parent):
       Toplevel.__init__(self, parent)
       Label(self, text="Child Window").pack()
       self.bClose = Button(self, text="Close", command=self.doClose)
       self.bClose.pack()
       self.withdraw()

   def doClose(self):
       self.withdraw()


def main():
  app = Tk()
  m = MainWin(app, SubWindow(app))
  app.mainloop()

if __name__ == "__main__": main()



_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to