Tkinter Listbox
Tkinter Listbox とは?
Listbox はユーザーに複数の選択肢を提示して、選択させるタイプのウィジェットです。
テーマ付きのウィジェットには Listbox は含まれません。つまり ttk.Listbox というのはありません。
Tkinter Listbox のオプション
Tkinter Listbox の height オプション
Tkinter Listbox の height オプションは、リストの高さを指定します。0 の場合はリスト全体が表示される高さになります。
Tkinter Listbox の listvariable オプション
Tkinter Listbox の listvariable オプションは、リストに表示される内容を表示するグローバル変数を指定します。
Tkinter Listbox の selectmode オプション
Tkinter Listbox の selectmode オプションは、リストの操作スタイルを指定します。 有効な値は single, browse, multiple, extended です。デフォルトは browse です。
Tkinter Listbox の state オプション
Tkinter Listbox の state オプションは、リストボックスの状態を指定します。 有効な値は normal と disabled です。
Tkinter Listbox の width オプション
Tkinter Listbox の width オプションは、リストの幅を文字数単位で指定します。
Tkinter Listbox のサンプルコード
ここでは tkinter の Listbox ウィジェットの使用例を示します。
次のように通貨を表すリストボックスが左側にあり、右側にボタンを配置します。
リストボックス内のエントリーを選択、または、ボタンを押したタイミングで、選択されている内容をコンソールに出力します。
from tkinter import *
from tkinter import ttk
def show_selection():
for i in lb.curselection():
print(lb.get(i))
if __name__ == '__main__':
root = Tk()
root.title('Listbox 1')
# フレーム
frame = ttk.Frame(root, padding=10)
frame.grid()
# リストボックス
currencies = ['JPY', 'USD']
v = StringVar(value=currencies)
lb = Listbox(
frame, listvariable=v,
selectmode='multiple', height=4)
lb.insert(END, 'EUR')
lb.bind(
'<<ListboxSelect>>',
lambda e: show_selection())
lb.grid(row=0, column=0)
# Button
button1 = ttk.Button(
frame, text='OK',
command=lambda: show_selection())
button1.grid(row=0, column=1)
root.mainloop()
Listbox は ttk ではない、標準のウィジェットです。同様の内容を ttk で実現するには TreeView が利用できます。
リスト内のオプションの選択時のイベントを処理するには、<<ListboxSelect>> イベントに関数をアタッチします。
上記の例では初期化時に listvariable にリストを渡すことで、リストボックスの内容を作成しています。また、初期化時のあとにさらに insert メソッドでリストボックス内のオプションを追加しています。
オプションを追加するときに END を指定することで、オプションの末尾にオプションが追加されています。