在 tkinter 中使用跟踪找不到回调函数

问题描述 投票:0回答:1

我在尝试跟踪 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

函数确实被调用并执行了,但还是弹出错误。

python tkinter trace
1个回答
0
投票

因为触发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()
代替。

© www.soinside.com 2019 - 2024. All rights reserved.