Я знаю, что глобальные переменные не являются лучшими для хороших программ, но для этой короткой задачи программирования я их использую. Я хочу обновить виджет масштабирования tkinter внутри функции, вызываемой потоком или привязкой ключа. Когда я пытаюсь использовать метод scale.set (value) в любой из этих функций, python по какой-то причине интерпретирует его как «int».Виджет шкалы Tkinter в некоторых случаях называется «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)
Но когда я пытаюсь использовать экземпляр масштаба в функции, вызываемой связанным ключом он дает мне эту ошибку,
(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 вызывается, когда вы нажимаете вверх направление ke y на клавиатуре, и этот код опущен, потому что я уверен, что он работает отлично.
Может ли кто-нибудь дать мне несколько указателей? Я так потерялся в этом, потому что никогда раньше не встречал ничего подобного.
Спасибо.
это звучит так, будто вы можете случайно использовать переменную w для чего-то еще более позднего времени, вы удвоили свой код, чтобы убедиться, что это не так? –
Да, я убедился, что это единственный экземпляр этого имени var, и это только дает мне ошибку, когда я использую его с этим вызовом функции или вызовом функции с потоковой функцией. И если я попытаюсь использовать контрольные переменные для виджета, они работают неправильно. Я не могу вернуть текущее значение шкалы с помощью управляющей переменной или изменить текущее значение шкалы с помощью управляющей переменной. – Tim
Нет! Вы были правы! Я не заметил одного экземпляра. Спасибо огромное! – Tim