2015-11-24 6 views
0

Я пытаюсь обновить значение из шкалы, динамически изменяя ее значение из другого виджета Scale. просто чтобы понять, как scale.set() метод работы я пробовал что-то вроде этого ...Update Scale Widget от значения другого Scale Widget

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) 

И когда Я передаю параметр команды кнопке, в которой все работает отлично. В чем проблема, здесь речь идет о виджетах Scale и его методах, которые я думаю, я не слишком удобен с ними, и любые полезные советы будут оценены ...

Большое спасибо !

+0

попробовать 'Защиту тест (переменная):' – furas

+0

нуб ошибку ... Спасибо чувак !!! это сработало –

ответ

2

Scale посылает новое значение для работы

def test(value): 
    scaleY.set(value) 

Я думаю, что вы можете использовать одну переменную, чтобы получить тот же результат

one_variable = DoubleVar() 

scaleX = Scale(root, variable=one_variable) 
scaleY = Scale(root, variable=one_variable) 
+0

Спасибо, что ваш старый ответ уже сработал ... Можете ли вы угадать в этой теме? http://stackoverflow.com/questions/33849512/update-tkinter-widget-scale-from-arduino-ports –