ウィジェットによっては、(テキスト入力ウィジェットのように)
特殊なオプションを使って、現在設定されている値をアプリケーション内の
変数に直接関連付けできます。このようなオプションには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()
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。