I'm having problems with remove_handler, I don't understand why I can�t
remove a handler using remove_handler. It works fine with Push/Pop, however.
Any help?
This code reproduces my problem:
import pyglet
class Dispatcher(pyglet.event.EventDispatcher):
def test(self):
print "dispatch_event ..."
self.dispatch_event("on_test")
Dispatcher.register_event_type("on_test")
class Listener(object):
def __init__(self):
self.dispatcher=Dispatcher()
def start(self):
print "set_handler"
self.dispatcher.set_handler('on_test',self.test)
def end(self):
print "remove_handler"
self.dispatcher.remove_handler('on_test',self.test)
def test(self):
print "CALLED EVENT HANDLER!"
listener=Listener()
print "_event_stack=",str(listener.dispatcher._event_stack)
listener.dispatcher.test()
listener.start()
listener.dispatcher.test()
listener.end()
listener.dispatcher.test()
print "_event_stack=",str(listener.dispatcher._event_stack)
OUTPUT:
_event_stack= ()
dispatch_event ...
set_handler
dispatch_event ...
CALLED EVENT HANDLER!
remove_handler
dispatch_event ...
CALLED EVENT HANDLER!
_event_stack= [{'on_test': <bound method Listener.test of
<__main__.Listener obj
ect at 0x022E3DD0>>}]