Я знаю, что такого рода вопросы задают постоянно, но либо я не смог найти нужный мне ответ, либо я не смог его понять, когда я это сделал.
Я хочу иметь возможность сделать что-то вроде:
spam = StringVar()
spam.set(aValue)
class MyScale(Scale):
def __init__(self,var,*args,**kwargs):
Scale.__init__(self,*args,**kwargs)
self.bind("<ButtonRelease-1>",self.getValue)
self.set(var.get())
def getValue(self,event):
## spam gets changed to the new value set
## by the user manipulating the scale
var.set(self.get)
eggs = MyScale(spam,*args,**kwargs)
eggs.pack()
Конечно, я получаю обратно "NameError: глобальное имя 'var' не определено."
Как мне обойти невозможность передачи аргументов в getValue? Я предупрежден против использования глобальных переменных, но это единственный вариант? Это настройка отдельного класса шкалы для каждой переменной, которую я хочу изменить? У меня такое чувство, что мне не хватает чего-то, что прямо у меня под носом ...
редактирование:
это то, что вы имеете в виду?
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\...\interface.py", line 70, in getValue
var.set(self.get)
NameError: global name 'var' is not defined
Извините, я программировал только месяц, и часть жаргона все еще ускользает от меня.