ウィジェットによっては、(テキスト入力ウィジェットのように)
特殊なオプションを使って、現在設定されている値をアプリケーション内の
変数に直接関連付けできます。このようなオプションにはvariable
、
textvariable
、onvalue
、offvalue
およびvalue
があります。この関連付けは双方向に働きます: 変数の値が何らかの理由で
変更されると、関連付けされているウィジェットも更新され、新しい値を
反映します。
残念ながら、現在のTkinter の実装では、
variable
やtextvariable
オプションでは
任意の Python の値をウィジェットに渡せません。
この関連付け機能がうまく働くのは、
Tkinter モジュール内で Variable というクラスから
サブクラス化されている変数によるオプションだけです。
Variable には、StringVar、IntVar、DoubleVarおよび BooleanVar といった便利なサブクラスがすでにすでに数多く定義 されています。こうした変数の現在の値を読み出したければ、 get() メソッドを呼び出します。また、値を変更したければ set() メソッドを呼び出します。 このプロトコルに従っている限り、それ以上なにも手を加えなくても ウィジェットは常に現在値に追従します。
例えば:
class App(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.pack() self.entrythingy = Entry() self.entrythingy.pack() # アプリケーション変数です self.contents = StringVar() # 変数の値を設定します self.contents.set("this is a variable") # エントリウィジェットに変数の値を監視させます self.entrythingy["textvariable"] = self.contents # ユーザがリターンキーを押した時にコールバックを呼び出させます # これで、このプログラムは、ユーザがリターンキーを押すと # アプリケーション変数の値を出力するようになります。 self.entrythingy.bind('<Key-Return>', self.print_contents) def print_contents(self, event): print "hi. contents of entry is now ---->", \ self.contents.get()
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。