Tkinter question
Cameron Laird
claird at lairds.com
Sun Nov 30 11:54:26 EST 2003
More information about the Python-list mailing list
Sun Nov 30 11:54:26 EST 2003
- Previous message (by thread): win32print how to lower cpu load?
- Next message (by thread): Tkinter question
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
In article <pan.2003.11.28.19.53.15.767100 at phreaker.nospam>, Logan <logan at phreaker.nospam> wrote: >On Fri, 28 Nov 2003 19:59:23 +0100, Ali El Dada wrote: > >> i am using Tkinter in my application, and i have a button >> that, when clicked, opens a new window as in: >> >> b1 = Button(someframe, text="bla", command = someFunction) >> >> def someFunction(): >> newWindow = Toplevel() >> '''the new window widgets go here''' >> >> of course, whenever the button is clicked, a new window >> opens. what do you recommend as a neat way to allow only one >> window to open?? > >It depends on what kind of behavior you want: if newWindow is e.g. >a dialog (like 'find', 'find & replace' etc. in an editor), you >want the new window to pop up, but any older dialog should get >destroyed. > >To achieve this, you can make newWindow a *global variable* and >use e.g. the following (not very elegant, but it works): > ># here, the 'find'-dialog is created (e.g. inside some class) > try: > newWindow.destroy() > except: > pass > > newWindow = Toplevel() > # widgets for the 'find'-dialog > ># here, the 'find&replace'-dialog is created (e.g. inside some class) > try: > newWindow.destroy() > except: > pass > > newWindow = Toplevel() > # widgets for the 'find&replace'-dialog > > >If you want, that your window gets created only once (and whenever >such a window is already open, no new window should be created) you >could either use an approach similar to the one above (i.e. with >newWindow being a global variable) or e.g. use a class which >keeps track on how many instances of itself were already created >and which behaves accordingly (Google: python, singleton). > >There are other solutions, too. The 'right' solution for you >depends mainly on the design of your whole program (OO or not etc.). . . . It's quite common with some toolkits--Tkinter among them--to re-use widgets. The body of a program just uses widgets as needed, and little initializers or constructors or helpers take care of creating (or sometimes deiconify- ing) the widgets as needed. They aren't destroyed, in general, although they might oc- casionally be iconified or withdrawn or unmanaged or such. -- Cameron Laird <claird at phaseit.net> Business: http://www.Phaseit.net
- Previous message (by thread): win32print how to lower cpu load?
- Next message (by thread): Tkinter question
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list