この種の質問が常に聞かれることは知っていますが、必要な答えに出くわすことができなかったか、理解できなかったのです。
私は次のようなことができるようにしたい:
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
申し訳ありませんが、私はプログラミングを始めてまだ 1 か月しか経っていません。