Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import threading
- import contexts
- class TkContext(contexts.CallableContext):
- def __init__(self, app):
- self.app = app
- self._post_signal = threading.Condition()
- @staticmethod
- def invoke(callable, args, kwargs):
- callable(*args, **kwargs)
- @staticmethod
- def invoke_and_notify(signal, callable, args, kwargs):
- with signal:
- callable(*args, **kwargs)
- signal.notify_all()
- def post(self, callable, *args, **kwargs):
- '''Adds a callable to invoke within this context.'''
- self.app.after(0, TkContext.invoke, callable, args, kwargs)
- def submit(self, callable, *args, **kwargs):
- '''Adds a callable to invoke within this context and returns when it
- has been completed.
- '''
- with self._post_signal:
- self.app.after(0, TkContext.invoke_and_notify, self._post_signal, callable, args, kwargs)
- self._post_signal.wait()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement