Removing handlers

3 views
Skip to first unread message

Txema Vicente

unread,
Sep 7, 2010, 2:20:44 PM9/7/10
to pyglet...@googlegroups.com
Hello.

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>>}]

Reply all
Reply to author
Forward
0 new messages