On Thu, Jul 10, 2008 at 8:45 PM, Guilherme Polo <[EMAIL PROTECTED]> wrote: > 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. >
I forgot a word there, "... And this will run forever ...", sorry >> >> 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. > -- -- Guilherme H. Polo Goncalves _______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss