Команданте ибн Кандела ([info]dervish_candela) wrote,
@ 2009-10-02 12:30:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
асинхронный гуй
оказался проще, чем мы думали:
import threading
import wx.lib.newevent
MakeEvent01, wx.EVENT01 = wx.lib.newevent.NewEvent()

class widget1(wx.SomeWidget):
def async_report(self, s):
    event = MakeEvent01()
    event.text = s
    wx.PostEvent(self, event)

def __init__(self, parent, **kwargs):
   wx.SomeWidget.__init__(self, parent, wx.ID_ANY, **kwargs)

def AssignJob(self,do_stuff):
   do_stuff_frozen = functools.partial(do_stuff, async_report)
   self.t = threading.Thread(target=do_stuff_frozen)
   self.Bind(wx.EVENT01, self.Event01Handler)
   self.t.start()

def Event01Handler(self, evt)
   self.Display(evt.text)

Этому добру кормим любую функцию вида DoSomeLongAndHeavyStuff(log) и радуемся жизни.
Интересно, можно ли ещё проще.


Advertisement


(Read 5 comments)

Post a comment in response:

From:
Help
Identity URL: 
Username:
Password:
Don't have an account? Create one now.
Subject:
No HTML allowed in subject
   Help
Message:

 
Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…