Я действительно сделал все возможное, чтобы найти решение самостоятельно, но не нашел. Я хочу получить значение из ползунка и затем сохранить его в CSV-файл (который работает нормально), одним нажатием кнопки. Увы, я не могу получить значение tkinter.Scale
во время моего события кнопки. Интересно, могут ли глобальные переменные решить мою проблему, но я не заставил их работать. Я особенно удивлен, потому что я могу напечатать живой масштаб значения масштаба, когда я изменяю его, но не могу сохранить его полезным способом. Если бы вы могли ответить на любое из моих недоумений или сообщить мне, если мой вопрос неясен или в любом случае может быть лучше, я был бы очень признателен. Вот несколько ссылок на вещи, которые помогли мне зайти так далеко:
https://www.programiz.com/python-programming/global-local-nonlocal-variables
Tkinter - Получить имя и значение шкалы / ползунка
Вот моя попытка напечатать окончательное значение 10 раз:
from tkinter import *
root = Tk()
def scaleevent(v): #Live update of value printed to shell
print(v)
variable = v
def savevalue():
global variable #This is what I want to work, but doesn't
for i in range(10):
print(variable)
scale = Scale(orient='vertical', command=scaleevent).grid(column=0,row=0)
button = Button(text="button", command=savevalue).grid(column=1, row=0)
root.mainloop()
И вот моя попытка решить мою проблему, используя .get()
:
from tkinter import *
root = Tk()
def savevalue(): #print value 10 times. In final version I will save it instead
for i in range(10):
print(scale.get()) #I really want this to work, but it doesn't,
root.destroy #is it because .get is in a function?
scale = Scale(orient='vertical', command=scaleevent).grid(column=0,row=0)
button = Button(text="button", command=savevalue).grid(column=1, row=0)
root.mainloop()
(Python 3.5, Windows 10)
Edit:
Это ошибка, которую я получаю с первой попытки использования глобальной переменной:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Me\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 1550, in __call__
return self.func(*args)
File "C:\Users\Me\Documents\programing\tkinter scale question.py", line 15, in savevalue
print(variable)
NameError: name 'variable' is not defined
Вот что произошло, когда я запустил первый пример кода, и точно так же мой настоящий проект. Спасибо Брайану Оукли!