[Twisted-Python] wxPython integration solution

Matthew Sherborne miracle at slingshot.co.nz
Wed Jul 7 20:35:18 EDT 2004


Hi All,

I've posted a solution for wx - twisted integration. Based on Itamars 
suggestions of two threads.

It's very easy to use.

To call a twisted method from wx thread just do:
   netCall(someTwistedThing, myParam, kword1=x, kword2=1)

It returns a deferred, that will be calledback and erredback safely in 
the wx thread.

Same for calling gui stuff from a twisted thread.
  guiCall(someGuiThing, (p1, p2))

or even easier create an interlayer object:
from twisted.protocols.basic import LineReceiver

class Gui2Net(LineReceiver):
    ...
    def send(self, someData):
        self.transport.send(someData)
    send = makeNetSafe(send)

In this example an instance of GuiNet can be used safely by the gui 
thread, it can send data, just like if it was a normal twisted call; it 
will return a deferred. "makeNetSafe" means make this net call safe to 
be called from the gui.

There is also a "makeGuiSafe" call, but I haven't tested it.

You can still use the wrapper object in your test cases if you dont have 
a gui. If no TwistedThread is instansiated netCall and makeNetSafe just 
pass through.

Comments appreciated.

Matthew Sherborne
Sherborne International Ltd
www.sherborneinternational.com





More information about the Twisted-Python mailing list