PythonのGUIライブラリであるTkinterには、さまざまなウィジェットが用意されていますが、その中でもリストボックスはリストやアイテムを表示できるウィジェットになります。
リストボックスウィジェットとは
リストボックスウィジェットは、選択可能な項目の一覧をユーザーに示し、その中の1つもしくは複数の項目をユーザーに選択してもらうことを目的として利用するウィジェットになります。
リストボックスの作成
リストボックスウィジェットは、tkinter の Listbox クラスのコンストラクタを実行することで作成することができます。
# app はメインウィンドウ等の親ウィジェット
listbox = tkinter.Listbox(app)
選択中の項目の取得
リストボックスで選択されている項目を取得するには、curselection
メソッドを使用します。
indices = listbox.curselection()
このメソッドは選択されている項目のインデックスをタプルで返します。選択されている項目がない場合は空のタプルを返します。
リストボックスの利用例
以下にリストボックスを利用した簡単なアプリのスクリプト例を示します。
import tkinter
def change_fill():
indices = listbox.curselection()
if len(indices) != 1:
return
index = indices[0]
color = listbox.get(index)
canvas.itemconfig(rect, fill=color)
app = tkinter.Tk()
canvas = tkinter.Canvas(app, width=300, height=200, highlightthickness=0)
canvas.grid(row=0, column=0, padx=10, pady=10)
rect = canvas.create_rectangle(10, 10, 290, 190, fill="white", width=1)
listbox = tkinter.Listbox(app)
listbox.grid(row=0, column=1, padx=10, pady=10)
colors = ["red", "blue", "green"]
for color in colors:
listbox.insert(tkinter.END, color)
button = tkinter.Button(app, text="色変更", command=change_fill)
button.grid(row=1, column=1, padx=10, pady=10)
app.mainloop()
このアプリでは、リストボックスに表示されている色の項目一覧から1つの色を選択した後に、”色変更” ボタンをクリックすれば、キャンバス上の長方形の色が選択した色に変化します。.