Il giorno lun, 05/07/2010 alle 16.32 +0800, Jason Heeris ha scritto: > Hi, > > I've been reading some conflicting advice on PyGTK and threading > recently, probably because the API went through some fairly rapid > changes recently. > > I'm a bit confused about the following points (consider them in > context of PyGTK/PyGObject unstable, ie. 2.17/2.21 respectively): > > 1. If I want to do async activity in a new Python thread spawned > from the main loop, I need to have called glib.threads_init() *before* > starting the main loop, right? But what about gtk.gdk.threads_init()? > 2. Any GTK interaction, such as emitting a signal from this new > thread, must be either: > a. done via glib.idle_add (if I'm happy to let GTK do it > whenever it next feels like it), -OR- > b. wrapped in gtk.gdk.threads_enter()/...leave(), -OR- > c. in a "with: gtk.gdk.lock:" block (equivalent to 2.b)
Apart from 2.c, I guess http://faq.pygtk.org/index.py?file=faq20.006.htp&req=show is clear enough? > 3. I don't need to do the threads_enter/leave (or use the context > manager) if I only use glib.idle_add (or timeout_add, etc) No, you don't. If you don't really need threads, life is much simpler. Cheers, Pietro _______________________________________________ pygtk mailing list pygtk@daa.com.au http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://faq.pygtk.org/