リストボックスで選択した値をラベルに表示しよう
前回はリストボックスで選択した値をコンソールに表示しました。
今回はリストボックスで選択した値をラベルに表示してみましょう。
変数クラス
リストボックスで項目を選択する度にラベルの内容を変更するには、tkinterで用意されている変数クラスを使います。
変数クラスには、IntVar()、DoubleVar()、BooleanVar()、StringVar() の4種類があります。
変数クラスで定義した変数をTkinter変数といいます。
今回はリストボックスで選択された文字列を格納するので、StringVar()を使います。
変数クラスを使う
StringVar()の使い方は、以下の通りです。
※ tkinterを別名でインポートした場合は、tkinterの部分を別名にしてください。
変数 = tkinter.StringVar()
実行例
value = tkinter.StringVar()
変数の値を変更する
変数の値を変更するには、set()メソッドを使います。
変数.set("値")
実行例
value.set("昭和")
ラベルの値を変更する
ラベルの値を変更するには、Labelウィジェットの textvariableオプションを使います。
StringVar()で作った変数を、そのまま指定します。
実行例
label = tkinter.Label(master=main, textvariable=value)
Listboxウィジェットで選択した値をラベルに表示するプログラム
Listboxウィジェットで選択した値をラベルに表示するプログラムは、以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
### インポート import tkinter ### 選択インデックス取得関数 def get_index(event): ### 選択インデックス取得 index = event.widget.curselection() ### 選択名称設定 value.set(event.widget.get(index)) ### メイン画面作成 main = tkinter.Tk() ### 画面サイズ設定 main.geometry("640x400") ### 画面色設定 main.configure(bg="lime") ### ラベル表示変数 value = tkinter.StringVar() ### リストボックス作成 listbox = tkinter.Listbox(master=main, font=("HG丸ゴシックM-PRO",24), bg="yellow", height=5) for name in ("明治", "大正", "昭和", "平成", "令和"): listbox.insert(tkinter.END, name) ### ラベル作成 label = tkinter.Label(master=main, textvariable=value, font=("HG丸ゴシックM-PRO",48), fg="red", bg="lime", height=3, width=15) ### リストボックス配置 listbox.pack(pady=20) ### ラベル配置 label.pack(pady=20, side="bottom") ### リストボックス選択時のイベント取得 listbox.bind("<<ListboxSelect>>", get_index) ### イベントループ main.mainloop() |
プログラムを実行して、リストボックスから昭和を選択すると、以下のような画面になります。