[wxPython-users] Problem in threading
Sbaush
sbaush at gmail.com
Mon Feb 6 04:24:35 EST 2006
oops...
I tried it but i got a bad segmentation fault!!
Is really a good threading implementation?
2006/2/2, Josiah Carlson <jcarlson at uci.edu>:
>
>
> My response is at the end.
>
> Sbaush <sbaush at gmail.com> wrote:
> > Hi all.
> > I've a problem with thread in python.
> > My applications has a GUI that has some button.
> > I've a MVC-like architecture.
> > If i click on a button there is this effect:
> >
> > view.button_1_delete.Bind(EVT_BUTTON,self.OnDelete)
> > view.button_1_list.Bind(EVT_BUTTON,self.OnList)
> >
> > def OnDelete(self, evt):
> > self.presenter.updateModel("delete")
> > def OnList(self, evt):
> > self.presenter.updateModel("list")
> >
> > Probably you image that the boss of this program is updateModel
> function.
> > this function has this code:
> >
> > def updateModel(self,Type):
> > iptType=Type
> > self.readGUI(iptType) # This function takes the request info
> from
> > GUI
> > packet=self.ipt_writeXML(iptType) # Put info in XML string
> > self.sender.send(packet) #Send the XML string
> > (xmlresponse,hostfrom)=self.receiver.receive() # Receive a XML
> > string response from agent and the IP of agent
> > self.iptResponse.run(xmlresponse,hostfrom) # view response in a
> > separate view.
> >
> > Now it works great, but there is a big problem: my app wait for response
> > before allow user to do another request.
> > I thought that with threads it could works perfectly.
> > I tried to apply threads but without any good result.
> > Have you idea how can i do it and how can i apply thread to it?
>
> import wx
> import wx.lib.newevent
> import threading
>
> ResponseEvent, EVT_RESPONSE = wx.lib.newevent.NewEvent()
>
> ...
> def __init__(self, ...):
> ...
> self.Bind(EVT_RESPONSE, self.GotResponse, self)
> ...
>
> def _updateModel(self, Type):
> iptType=Type
> self.readGUI(iptType)
> packet=self.ipt_writeXML(iptType)
> self.sender.send(packet)
> (xmlresponse,hostfrom)=self.receiver.receive()
> wx.PostEvent(self,
> ResponseEvent(xml=xmlresponse,
> host=hostfrom))
>
> def updateModel(self, Type):
> threading.Thread(target=self._updateModel,
> args=(Type,)).start()
>
> def GotResponse(self, evt):
> self.iptResponse.run(evt.xml, xml.host)
> ...
>
>
> - Josiah
>
>
--
Sbaush
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20060206/c68a5117/attachment.html>
More information about the Python-list
mailing list