Python 入門

ホーム > Tkinter による GUI プログラミング > Listbox - Tkinter のウィジェット

Listbox - Tkinter のウィジェット

ここでは tkinter の Listbox ウィジェットの使用例を示します。

次のように通貨を表すリストボックスが左側にあり、右側にボタンを配置します。

tkinter Listbox

リストボックス内のエントリーを選択、または、ボタンを押したタイミングで、選択されている内容をコンソールに出力します。

from tkinter import *
from tkinter import ttk

def button_click():
    show_selection()
    
def listbox_selected(event):
    show_selection()
    
def show_selection():
    for i in lb.curselection():
        print(lb.get(i))

if __name__ == '__main__':
    root = Tk()
    root.title('Listbox 1')
    
    # フレーム
    frame1 = ttk.Frame(root, padding=10)
    frame1.grid()
    
    # リストボックス
    currencies = ('JPY', 'USD')
    v1 = StringVar(value=currencies)
    lb = Listbox(frame1, listvariable=v1,height=4)
    lb.insert(END, 'EUR')
    lb.bind('<<ListboxSelect>>', listbox_selected)
    lb.grid(row=0, column=0)
    
    #Button
    button1 = ttk.Button(frame1, text='OK', command=button_click)
    button1.grid(row=0, column=1)
    
    root.mainloop()

Listbox は ttk ではない、標準のウィジェットです。同様の内容を ttk で実現するには TreeView が利用できます。

リスト内のオプションの選択時のイベントを処理するには、<<ListboxSelect>> イベントに関数をアタッチします。

上記の例では初期化時に listvariable にタプルを渡すことで、リストボックスの内容を作成しています。また、初期化時のあとにさらに insert メソッドでリストボックス内のオプションを追加しています。

オプションを追加するときに END を指定することで、オプションの末尾にオプションが追加されています。

ホーム > Tkinter による GUI プログラミング > Listbox - Tkinter のウィジェット