Tkinter cохранение значения в списке
Не могу настроить обновление виджета Scale по кнопке. Мне нужно, чтобы положение записывалось в список Scale по кнопке Safe и потом при нажатии кнопки Call меняло значение Scale.
from tkinter import *
window = Tk()
scale = Scale
var1 = DoubleVar()
label1 = Label(window, relief='groove', width=6)
scale1 = Scale(window, variable=var1, orient=HORIZONTAL)
scene1Btn = Button(window)
storepres1Btn = Button(window)
A = [10]
Labels = [label1]
Scales = [scale1]
Varlist = [var1]
# geometry
label1.grid()
scene1Btn.grid()
storepres1Btn.grid(row=1, column=1)
scale1.grid(row=0, column=1)
# Buttons
def recall1():
Scales[0].set(A[0])
pass
def storepres1():
A[0] = Varlist[0]
pass
# Initialize buttons
window.title("Extron Python Training")
label1.configure(textvariable=var1)
scene1Btn.configure(text='Call', command=recall1)
storepres1Btn.configure(text='Safe', command=storepres1)
window.mainloop()
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Здесь вы объект DoubleVar сохраняете в список:
A[0] = Varlist[0]
А тут этот объект пытаетесь установить как значение шкалы:
Scales[0].set(A[0])
В этот момент в консоль пишется вот это:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.8/tkinter/__init__.py", line 1883, in __call__
return self.func(*args)
File "/home/insolor/Projects/scales.py", line 27, in recall1
Scales[0].set(A[0])
File "/usr/lib/python3.8/tkinter/__init__.py", line 3463, in set
self.tk.call(self._w, 'set', value)
_tkinter.TclError: expected floating-point number but got "PY_VAR0"
То есть ожидалось число с плавающей точкой, а получен объект переменной tk.
Нужно получить значение из переменной с помощью метода get, потом сохранить его, тогда все заработает:
def storepres1():
A[0] = Varlist[0].get()