WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   method of a class instance not accepted as Callback (https://forum.worldviz.com/showthread.php?t=390)

Gilliard 08-10-2005 05:55 AM

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 !

farshizzo 08-10-2005 05:49 PM

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)

Note that I changed your class to inherit from viz.EventClass.

Also, when posting snippets of code, you can use the following tag: [code ] insert code [/code ]


All times are GMT -7. The time now is 09:29 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC