[wxPython-users] not able to make two thread together.
Paul Cornelius
paul.cornelius at vuemetrix.com
Mon Dec 3 19:58:44 PST 2007
Naishadh shroff. wrote:
> Hi ,
> I see this link. It is interesting. but still i am not sure how to
> solve my problem. I am trying. Here i am posting some code. Just look
> at it.
> #wxpython on run button event
>
> def OnRun(self,event):
> print "Before the script start"
> #This thread class start the back ground script which is
> generating jpg for panel
> RunScript().start()
> print "After the script start"
> #Sleep time thread initialization and script is costly so it
> takes some time
> time.sleep(30)
> print "After the 30 script start"
> #Loop that displaying the images
> for i in range(0, 9):
> print "loop start",i
> self.imageFile1="./results/r10001t"+str(i)+".asc.jpg"
> self.bmp =
> wx.Image(self.imageFile1,wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
> self.obj = wx.StaticBitmap(self.panel, -1, self.bmp,
> (20,20), (580,620))
> self.obj.Refresh()
> time.sleep(5)
> print "loop done",i
>
>
> Now every thing is working fine. But the my wxpython is unresponsive
> now. N wiered thing is when i run only script or only loop. The
> wxpython is working perfectly.
> CONFUSED... big time
> Thanks,
> Naish
>
>
All event handlers run in the same thread. Therefore you cannot process
other events (such as clicking on a button, closing the window, typing a
key, etc.) until you finish processing this one. That's why your app
becomes unresponsive while control is inside this event handler. So you
need to fork another thread for your long-running process. Also you
should not create a new widget (wx.StaticBitmap) in an event handler.
I'm not sure what will happen when you try this, but it won't be good.
More information about the wxpython-users
mailing list