[PyKDE] Updating GUI from another thread
Giovanni Bajo
rasky at develer.com
Thu Apr 7 08:47:53 BST 2005
Jeffrey Barish <jeff_barish at earthlink.net> wrote:
> I tried using
> a custom event. I found that I need a timer in the GUI thread to
> trigger a processEvents call.
The timer should not be needed at all: the main thread is sitting in the event
loop, so there is no reason why you need to call processEvents().
> Then I discovered that I don't seem to
> need the custom event: I can simply deselect the item from the task
> thread, although the processEvents call is still necessary. Is the
> issue that something bad could happen if I happen to try selecting
> the item at the same time the task thread is trying to deselect it?
Yes, you should not be doing this. If you really need this, you must use
app.lock() / app.unlock() in the thread to block the main thread.
Basically, in Qt 3, the only safe thing you can do is sending a custom event
across threads. In Qt 4 you can connect signals/slots across threads (across
QThreads actually) and Qt will do the right thing.
> Is the solution with the custom event optimal?
Yes, without QTimer. You should not need it.
Giovanni Bajo
More information about the PyQt
mailing list