跟踪 self.variable

Trace self.variable

我正在尝试追踪一个变量:

    def callback(*args):
        print "variable changed!"
    self.entryVariable = Tkinter.StringVar()
    self.entryVariable.trace("w", callback)

这很好用,但我想实际打印出 callback 中的变量:

    def callback(self.entryVariable):
        print "variable changed!"
        print self.entryVariable.get()
    self.entryVariable = Tkinter.StringVar()
    self.entryVariable.trace("w", callback(self.entryVariable))

但是,我得到

def callback(self.entryVariable):
                 ^
SyntaxError: invalid syntax 

您犯了 classic 错误,没有给 trace() 函数一个 function 对象,而是给该函数的 return 值。您可以使用 lambda,但您根本不必使用任何参数,因此只需使用

self.entryVariable.trace("w", self.callback)

您可以在 class 中的任何位置提及任何 self.xxx 属性,因此您的方法变为:

def callback(self, *args):
    print "variable changed!"
    print self.entryVariable.get()