On Thu, Jul 10, 2008 at 8:24 PM, Alexnb <[EMAIL PROTECTED]> wrote: > > > > Guilherme Polo wrote: >> >> On Thu, Jul 10, 2008 at 7:31 PM, Alexnb <[EMAIL PROTECTED]> wrote: >>> >>> >>> >>> Guilherme Polo wrote: >>>> >>>> On Thu, Jul 10, 2008 at 5:57 PM, Alexnb <[EMAIL PROTECTED]> wrote: >>>>> >>>>> Okay, so I have a for loop with a sleep command. I want the loop to >>>>> continue >>>>> until it is told to stop. I want to tell it to stop when a list goes >>>>> from >>>>> empty to having something. The problem is that when that loop starts, >>>>> the >>>>> program pretty much stops with it. >>>> >>>> You need to remove the use of sleep and use "after" instead. You keep >>>> scheduling your task till the condition is not met anymore, then you >>>> stop scheduling it with "after". >>>> >>>>> To make things harder, I really want that >>>>> to be it's own class, so I have to pass it the list that triggers the >>>>> stopping, but I can only pass it the list once. So I don't think it is >>>>> possible. >>>> >>>> It is, just pass some other object along which can call the method >>>> "after". >>>> >>>>> But if this made sense to anyone, and you have a suggestion I >>>>> would love it. Heres the full code: (but at the bottom, the Open >>>>> function >>>>> is >>>>> really the only thing that matters) >>>>> >>>> >>>> If you want help based on code, you have to post a short-enough code >>>> that demonstrates the problem. >>>> >>>>> from Tkinter import * >>>>> import time >>>>> >>>>> class BusyBar(Frame): >>>>> ... >>>> >>>> >>>> >>>> -- >>>> -- Guilherme H. Polo Goncalves >>>> _______________________________________________ >>>> Tkinter-discuss mailing list >>>> Tkinter-discuss@python.org >>>> http://mail.python.org/mailman/listinfo/tkinter-discuss >>>> >>>> >>> >>> Okay, so I modified the bottom code to this: >>> >>> def Open(root): >>> >>> bb = BusyBar(root, text='Grabbing Definitions') >>> bb.pack(side=LEFT, expand=NO) >>> >>> >>> def sleeper(): >>> root.update >> >> What if you change this to root.update() ? >> >>> root.after(1, sleeper) >> >> after works with milliseconds, not seconds, be aware. >> >>> bb.on() >>> root.update_idletasks() >>> >>> sleeper() >>> >>> #for i in range(0, 100): >>> #time.sleep(0.1) >>> #root.update() >>> bb.of() >>> >>> but it doesn't repeat. What am I missing? >>> >> >> >> -- >> -- Guilherme H. Polo Goncalves >> _______________________________________________ >> Tkinter-discuss mailing list >> Tkinter-discuss@python.org >> http://mail.python.org/mailman/listinfo/tkinter-discuss >> >> > > Well, what was happening before is that the bar would just be at a > standstill. After making it update() it moved a little, but was just a > standstill at a different place, if that makes sense. Any more ideas? heres > the code: > > def Open(root): > > bb = BusyBar(root, text='Grabbing Definitions') > bb.pack(side=LEFT, expand=NO) > > bb.on() > root.update_idletasks() > > def sleeper(): > root.update() > root.after(1, sleeper)
Did you ignore my last email where I said after takes milliseconds, not seconds ? And this will forever, not what you want apparently. > > sleeper() > > #for i in range(0, 100): > #time.sleep(0.1) > #root.update() > bb.of() The code you have pasted in the last two emails don't show the problem you are having. I guess someone else will have to look at your entire code to give more help. > > -- > View this message in context: > http://www.nabble.com/Stopping-a-for-loop-with-a-sleep%28%29-funciton-in-it-tp18391735p18394006.html > Sent from the Python - tkinter-discuss mailing list archive at Nabble.com. > > _______________________________________________ > Tkinter-discuss mailing list > Tkinter-discuss@python.org > http://mail.python.org/mailman/listinfo/tkinter-discuss > -- -- Guilherme H. Polo Goncalves _______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss