GUI (PyQt) & thread problem
jason at jorendorff.com
Mon Feb 25 04:50:57 EST 2002
> Thank you for your reply. Do you have any pointers on how to implement
> this kind of functionality, i.e. when something happens in the worker
> thread (not GUI related), the GUI needs to be updated. Is it at all
Yes. There are two things you can try. Both are documented for
C++ Qt here, briefly:
1. When something happens in the worker thread, post an event
about it. A moment later, the GUI thread will pick up the
event and handle it as normal.
This is the preferred technique and you can use it to post either
a normal basic event like a QPaintEvent (to cause a simple repaint)
or to post a special magic event of your own to any QObject of your
choosing. You can be sure that when the target object
receives the event, it is in the GUI thread and can call GUI
The method you need for this is QThread.postEvent().
I can't tell if this function is available from PyQt or not.
2. When something happens in the worker thread, have the
worker acquire the Qt library mutex. When you do this,
your worker thread then may call whatever GUI functions
it likes. It then simply releases the mutex to turn control
back over to the normal GUI thread.
Only do this if #1 doesn't work.
## Jason Orendorff http://www.jorendorff.com/
More information about the Python-list