tkinter redraw rates

fronagzen at gmail.com fronagzen at gmail.com
Wed Jul 17 15:18:45 CEST 2013


On Wednesday, July 17, 2013 7:42:45 PM UTC+8, Dave Angel wrote:
> On 07/17/2013 07:10 AM, fronagzen at gmail.com wrote:
> > On Wednesday, July 17, 2013 6:07:22 PM UTC+8, Dave Angel wrote:
> >> On 07/16/2013 11:04 PM, fronagzen at gmail.com wrote:
> >>> Noted on the quoting thing.
> >>> Regarding the threading, well, first, I'm not so much a programmer as someone who knows a bit of how to program.
> >>> And it seems that the only way to update a tkinter window is to use the .update() method, which is what I was experimenting with. Start up a new thread that just loops the .update() with a 1ms sleep until the download is done. It seems to work, actually.
> >> update() is to be used when it's too awkward to return to mainloop.  In
> >> my second approach, you would periodically call it inside the processing
> >> loop.  But unless tkinter is unique among GUI's, it's unsafe to do that
> >> in any thread besides the GUI thread.
> >> DaveA
> > Yes, based on advice from this thread, I'm doing that. From my main thread, I create a thread that handles the download while updating a variable that the mainloop displays as a text output, and in that mainloop, I have a while loop that updates the GUI until the downloading is done.
> I can't figure out what you're really doing, since each message from you 
> says something different.  You don't need a separate while loop, since 
> that's exactly what app.mainloop() is.
> -- 
> 
> DaveA

Hm. My apologies for not being very clear. What I'm doing is this:

        self.loader_thread = Thread(target=self.loadpages,
                                    name="loader_thread")
        self.loader_thread.start()
        while self.loader_thread.isAlive():
            self.root_window.update()
            sleep(0.05)

Where loadpages is a function defined elsewhere.



More information about the Python-list mailing list