【问题标题】:Trace self.variable跟踪自变量
【发布时间】:2015-05-24 20:43:42
【问题描述】:

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

    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 

【问题讨论】:

标签: python oop tkinter


【解决方案1】:

您犯了一个典型的错误,即没有给trace() 函数一个function 对象,而是该函数的返回值。你可以使用lambda,但你根本不需要使用任何参数,所以只需使用

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

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

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

【讨论】:

  • 不是任何地方。只要callback 在类实例方法中定义,那么self 就应该可用。
  • 假设我想用self.entryVariable.trace("w", self.callback)在方法之外定义回调?我想将变量中的更改绑定到事件..
  • 顺便说一句,def callback(*args): 似乎可以工作,但def callback(): 给了return self.func(*args) TypeError: callback() takes no arguments (3 given)
  • @user99889 已修复。而且我已经假设您在其他方法之外定义该方法,就像您调用您的方法一样 self.callback.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 2015-11-15
  • 1970-01-01
  • 2010-09-17
  • 2017-03-31
  • 1970-01-01
相关资源
最近更新 更多