![]() |
|
|
|
#1
|
|||
|
|||
|
method of a class instance not accepted as Callback
Is it impossible to use a method of an instance as callback ?
(As it can be done in Tkinter e.g. in x = Button(self, text="quit", command=self.quit) My piece of code : (without indentation ! ??, why) class VizServer: def __init__(self): self.clientName = None self.clientMailbox = None def networkCallback(self, message): print "Message content : ", message[2:] def connect(self, theClientName): self.clientName = theClientName try: self.clientMailbox = viz.add(viz.NETWORK, self.clientName) except: print __name__, ": EXCEPTION : Connection failed" viz.callback(viz.NETWORK_EVENT, self.networkCallback) # --> ERROR : "** Error: Invalid callback type" # End of class ! If I put my "networkCallback(message) outside the class, it works ... but I don't have access to the instance attributes and methods anymore !
__________________
Bertrand Gilliard Last edited by Gilliard; 08-10-2005 at 05:57 AM. |
|
#2
|
|||
|
|||
|
Hi,
This issue has been resolved since version 2.52a. I believe the latest version will be released sometime next week. When you do have the latest version you can do the following: Code:
class VizServer(viz.EventClass):
def __init__(self):
viz.EventClass.__init__(self)
self.clientName = None
self.clientMailbox = None
def networkCallback(self, message):
print "Message content : ", message[2:]
def connect(self, theClientName):
self.clientName = theClientName
self.clientMailbox = viz.add(viz.NETWORK, self.clientName)
if not self.clientMailbox.valid():
print __name__, ": EXCEPTION : Connection failed"
self.callback(viz.NETWORK_EVENT, self.networkCallback)
Also, when posting snippets of code, you can use the following tag: [code ] insert code [/code ] |
![]() |
|
|