我在尝试跟踪 tkinter 中的变量时遇到错误。有什么想法吗?
from tkinter import *
root = Tk()
var = DoubleVar(root)
var.trace("w", lambda unused0, unused1, unused2: callback)
ideal_segment_size_spin = Spinbox(root,from_=0, to=100, increment=0.1,textvariable=var)
def callback(*args):
pass
错误是:
NameError: name 'callback' is not defined
。
函数确实被调用并执行了,但还是弹出错误。
因为触发trace时,
callback()
还没有定义。
将
callback()
的定义移至var.trace(...)
之前。另请注意,lambda
对于您的情况来说不是必需的:
from tkinter import *
def callback(*args):
print(args)
root = Tk()
var = DoubleVar(root)
var.trace("w", callback)
ideal_segment_size_spin = Spinbox(root,from_=0, to=100, increment=0.1, textvariable=var)
...
另请注意,
.trace()
将被弃用,请使用 .trace_add()
代替。