How to run PyOS_InputHook from python code (i.e. yield to event loops)

Sean DiZazzo half.italian at gmail.com
Mon Sep 8 21:38:37 CEST 2008


On Sep 6, 1:00 pm, vivai... at gmail.com (Ville M. Vainio) wrote:
> Background: PyOS_InputHook is something that gets run when python is
> doing raw_input. TkInter and friends use it to run their event loops,
> so that their events are handled while python is doing raw_input.
>
> What I'd like to do is run the same function without having to do
> raw_input. I.e. I'd like to run whatever event loop is available,
> without incorporating any gui-specific code (PyOS_InputHook seems like
> a nifty way to accomplish this).
>
> My actual use case is to keep a tkinter application responsive while
> launching a background process (and waiting for it to complete!).
>
> My eventual code would be something like:
>
> launch_process_in_thread('bzr pull')
>
> while not is_done:
>   pyos_inputhook()
>   time.sleep(0.1)
>
> print "Done!"

I'm still recovering from a hangover, so don't quote me.  I think you
want the "after" function:

launch_process_in_thread('bzr pull')
self.update()

def update(self):
    while not self.is_done:
        self.after(2000, self.update)



More information about the Python-list mailing list