Es ist immer gut, wenn man einzelne Anforderungen nur stückchenweise verrät.
Ich hab immer noch keinen Plan, was der Fragesteller eigentlich erreichen will.
Naja, ich hab trotzdem die
einzig richtige Lösung gefunden:
waittill heißt in Python yield.
Code: Alles auswählen
class SignalHandler(object):
def __init__(self):
self.workers = {}
def handle(self, worker):
self.workers[worker] = next(worker)
def emit(self, target, signal):
active = [worker
for worker, target_signal in self.workers.iteritems()
if target_signal == (target, signal)]
for worker in active:
try:
self.workers[worker] = next(worker)
except StopIteration:
pass
trigger1 = "Button A"
trigger2 = "Button B"
def hidden_quest():
while True:
print "Press Button A"
yield trigger1, 'trigger'
print "Triggered"
print "Now press Button B"
yield trigger2, 'trigger'
print "Triggered"
signal_handler = SignalHandler()
signal_handler.handle(hidden_quest())
signal_handler.emit(trigger1, 'trigger')
signal_handler.emit(trigger2, 'push') # nothing happens
signal_handler.emit(trigger2, 'trigger')
signal_handler.emit(trigger1, 'trigger')
------
endlich den ronie-Knopf hier im Forum gefunden