在某些情况下,Tkinter规模小部件被称为“int”

时间:2015-04-09 05:52:47

标签: python tkinter attributeerror tkinter-scale

我知道全局变量对于好的程序来说不是最好的,但是为了这个简短的编程任务我正在使用它们。我想在线程调用的函数内部或通过绑定键来更新tkinter scale小部件。当我尝试在这些函数中的任何一个中使用scale.set(value)方法时,python由于某种原因将其解释为'int'。

在这种情况下没有问题:

w = tk.Scale(master=frame, from_=50, to=0)
w.set(0)
w.grid(column=1, row=1, sticky=W+N+E+S)

def test(x):
    global w
    w.set(x)

test(17)

但是当我尝试在绑定键调用的函数中使用scale实例时,它会给我这个错误,

(File "TestingRoverMap.py", line 161, in test
    w.set(x)
AttributeError: 'int' object has no attribute 'set')

运行以下代码时:

w = tk.Scale(master=frame, from_=50, to=0)
w.set(0)
w.grid(column=1, row=1, sticky=W+N+E+S)

def upKey(event):
    global w
    w.set(48)

当您按下键盘上的向上方向键并且该代码被省略时,将调用upKey函数,因为我确信它可以正常工作。

任何人都可以给我一些指示吗?我很失落,因为我以前从未遇到过类似的事情。

感谢。

1 个答案:

答案 0 :(得分:1)

事实证明我之后在我的代码中重复使用'w'作为值,以便重新输入值并给我属性错误。这个问题已经解决了。