[pygtk] Signals and threads
Antoon Pardon
Antoon.Pardon at rece.vub.ac.be
Mon Feb 27 18:36:04 WST 2006
On Sat, Feb 11, 2006 at 10:04:33PM +0100, Jarek Zgoda wrote:
> I'd like to emit signal from GObject descendant created in separate
> thread and to respond in a callback in main thread. Do I need to do
> something magic, as currently my callbacks simply don't fire? I have
> threading enabled in an application entry point module (threads_init()
> et caetera).
If I understand correctly, you want the possibility that one threads
emits a signal to an object and that this signal will be treated
in the same way as if it came from a mouse click or things like that.
Yes it is possible, but yes it requires some magic.
This is how I do it:
import gtk
import gobject as gob
import gtk.gdk as gdk
def Emit(obj, *args):
def Do_Emit(obj, sig, *args):
gdk.threads_enter()
obj.emit(sig, *args)
gdk.threads_leave()
return False
#end Do_Emit
gob.idle_add(Do_Emit, obj, *args, **{"priority" : gob.PRIORITY_HIGH})
#end Emit
To be used as follows:
Emit(obj, signal, args)
--
Antoon Pardon
More information about the pygtk
mailing list