[pygtk] Pygtk does not play nicely with speech-dispatcher

John Finlay finlay at moeraki.com
Sat Apr 26 01:44:44 WST 2008


James Simmons wrote:
> Michael,
>
> Thanks for the tip!  It was a big help.  I put gtk.gdk.threads_init()  
> in the __init__ method of my program and I did get callbacks.  It 
> looks like I didn't get callbacks for every word, but Pygtk seems to 
> not be the problem anymore.  Thanks again,
The problem is that gtk and by extension pygtk has an event loop, and 
the python speechd api has implemented its own event loop within a 
thread. The speechd protocol is synchronous and sounds similar to RPCs. 
This event loop conflict was in general a problem with RPC programming 
with GUIs. The best solution is to integrate the two event loops using 
io_add_watch but that would entail throwing away the python speechd api 
and you would not have to use threads. This is the course I would take 
if I was doing your project.

If you want to use the speechd python api you have to make your pygtk 
program threaded and that is more than just calling threads_init. Others 
on this list can point you to a list of best practices for threading in 
pygtk.

John


More information about the pygtk mailing list