我试图动态更新Scale
窗口小部件的值,以便将其值更改为另一个Scale
窗口小部件的值。只是为了理解Scale.set()
方法是如何工作的,我尝试过这样的事情:
from Tkinter import *
def sel():
selection = "Value = " + str(varX.get())
label.config(text = selection)
def test():
toScale = varX.get()
scaleY.set(toScale)
root = Tk()
varX = DoubleVar()
varY = DoubleVar()
scaleX = Scale(root, variable = varX, command=test)
scaleX.pack(anchor=CENTER)
scaleY = Scale(root, variable = varY)
scaleY.pack()
button = Button(root, text="Get Scale Value")
button.pack(anchor=CENTER)
label = Label(root)
label.pack()
txt = Entry(root)
txt.pack()
root.mainloop()
但是当我尝试运行时,我得到了:
Exception in Tkinter callback Traceback (most recent call last): File "C:\Python27\lib\lib-tk\Tkinter.py", line 1486, in __call__ return self.func(*args) TypeError: test() takes no arguments (1 given)
当我将command
关键字参数传递给按钮时,它可以正常工作。这里有什么问题?它是关于Scale
小部件及其方法的全部内容。我对他们不太满意,任何帮助都会受到赞赏。
答案 0 :(得分:2)
Scale
向函数发送新值
def test(value):
scaleY.set(value)
我认为您可以使用一个变量来获得相同的结果
one_variable = DoubleVar()
scaleX = Scale(root, variable=one_variable)
scaleY = Scale(root, variable=one_variable)