[wxPython-users] calling wxPython functions from different thread
A.J. Bonnema
abonnema at xs4all.nl
Mon Feb 11 09:30:05 PST 2008
Jacek Poplawski wrote:
> hello again,
>
> I was trying to make my application multithreaded, I put my calculations
> in different Thread, then I gave this Thread name of the function to
> call when it finish.
> This function updates ListCtrl.
> So it works this way:
>
> - ListCtrl has old values
> - I want to add new element, it requires calculations
> - I call different thread and give it reference to Update() function
> - I do different things while thread does its calculations
> - thread finishes calculations and calls Update()
> - Update() regenerates data in ListCtrl
>
> The problem is, that my GUI is unstable after last step. ListCtrl is not
> updated until I use scroll, then it updates, but I can't click anything
> else in the wxPython window.
Hi Jacek,
From the "wxPython in Action": the GUI bit is not threadsafe. You
should not call any function of the GUI from a thread. Any GUI function
can *only* be called from the main thread or you will have trouble. And
it will be hard to diagnose.
As soon as you call update() from your thread, the update-function runs
in the thread and the GUI becomes unstable. Dont.
I suppose you could use Queue objects, but I have no experience doing so.
What you would do is: post to the queue from the thread and read from
the queue from the main thread. Does that make any sense?
Guus.
--
A.J. Bonnema, Leiden The Netherlands,
user #328198 (Linux Counter http://counter.li.org)
More information about the wxpython-users
mailing list