リストボックスにスクロールバーを設定しよう
今回は前回作成したリストボックスにスクロールバーを設定してみましょう。
スクロールバーを設定するために、フレームを作り、その中にリストボックスとスクロールバーを配置します。
スクロールバーを設定する
スクロールバーの使い方は、以下の通りです。
※ tkinterを別名でインポートした場合は、tkinterの部分を別名にしてください。
オブジェクト名 = tkinter.Scrollbar(master=親ウィジェット, オプション)
Scrollbarウィジェットで使うオプション
Scrollbarウィジェットで使う主なオプションは、以下の通りです。
オプション名 | 内容 |
command | スクロールバーが移動した時に呼び出されるプロシージャー |
orient | スクロールバーの向き 水平:HORIZONTAL、垂直:VERTICAL (デフォルト) |
width | スクロールバーの幅 |
Scrollbarウィジェットで使うメソッド
Listboxウィジェットにスクロールバーを設定して、スクロールバーのスライドに合わせてリストボックスの内容を動かすには、Scrollvarウィジェットのset()メソッドをListboxウィジェットのオプションに指定します。
設定するオプションは、以下の通りです。
オプション名 | 内容 |
xscrollcommand | 水平スクロールバー |
yscrollcommand | 垂直スクロールバー |
リストボックスにスクロールバーを設定したプログラム
リストボックスにスクロールバーを設定したプログラムは、以下のようになります。
46行目でスクロールバーの配置を指定します。
side="right" はスクロールバーの位置を右に、fill="y" はスクロールバーを垂直方向いっぱいに表示します。
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
### インポート 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() ### フレーム作成 frame = tkinter.Frame(master=None) ### スクロールバー作成 scrollbar = tkinter.Scrollbar(master=frame, orient="vertical") ### リストボックス作成 listbox = tkinter.Listbox(master=frame, font=("HG丸ゴシックM-PRO",24), bg="yellow", height=5, yscrollcommand=scrollbar.set) for name in ("安政", "万延", "文久", "元治", "慶応", "明治", "大正", "昭和", "平成", "令和"): listbox.insert(tkinter.END, name) ### スクロールバー動作設定 scrollbar.config(command=listbox.yview) ### ラベル作成 label = tkinter.Label(master=main, textvariable=value, font=("HG丸ゴシックM-PRO",48), fg="red", bg="lime", height=3, width=15) ### フレーム配置 frame.pack(pady=20) ### スクロールバー配置 scrollbar.pack(side="right", fill="y") ### リストボックス配置 listbox.pack() ### ラベル配置 label.pack(pady=20, side="bottom") ### リストボックス選択時のイベント取得 listbox.bind("<<ListboxSelect>>", get_index) ### イベントループ main.mainloop() |
プログラムを実行して、リストボックスから慶応を選択すると、以下のような画面になります。