On Wed, May 18, 2011 at 5:01 PM, psao pollard-flamand
<[email protected]> wrote:
> You know when you click a tkinter button and the window usually freezes
> until its done? Does any one know how to stop that?
This may or may not fix your problem, depending on your updating problem.
Instead of:
Button(tkwin, text="Go", command=dosomething)
Put instead:
def delayedDoSomething():
tkwin.after(100, dosomething)
Button(tkwin, text="Go", command=delayedDoSomething)
The net effect is taking your button command off the event queue
for a bit, letting the button to redraw itself or whatever needs to be done.
if the work done by the command invoked by the button is quite cpu intensive,
I do somethink like the following:
Class XXX(Toplevel):
def updateInterface(self):
self.updateDisplay()
if not self.DONE:
self.after(100, self.updateInterface)
def doSomething(self):
# A flag used by updateInterface to know when to quit
self.DONE=False
# The following will return, but call itself every second
self.updateInterface()
# Now do the work
for fpath in glob.glob("*.*"):
self.processFile(fpath)
# next line is important I think to ensure the display proc
gets a chance
self.update()
# work finished, tell updateInterface to quit
self.DONE=True
_______________________________________________
Tkinter-discuss mailing list
[email protected]
http://mail.python.org/mailman/listinfo/tkinter-discuss