Python Code Notes

Information by python engineer

【tkinter】Listboxの使い方【Python】

Listbox使用例

Listboxはデータを一覧表示してユーザーに選択してもらうためのウィジェットです。具体的な使用例を用いて使い方を解説しました。


【スポンサーリンク】


項目を設定・取得する方法

Listboxは複数のデータを一覧表示させてユーザーに選択してもらうためのウィジェットです。機能としてはComboboxとほぼ同じですが、Listboxは常に複数のデータが表示させることが可能です。

以下、ListboxにHard, Normal, Easyの3項目を表示し、選択した値を取得してラベルに反映させる例を示します。

How to use listbox (set item and get selected)

実行するとLabelとListboxが表示され、ListboxにはEasy, Normal, Hardの3項目が初期値として設定されます。Listboxの項目を選択すると、その内容がLabelに反映されます。

選択項目をラベルに反映

この例では、insertメソッドを用いてListboxに表示する項目の設定を行っています(26, 27行目)。項目の設定はlistvariableパラメータにvariable変数を渡すことでも可能です。内容を頻繁に変更する場合はlistvariableを用いた方が更新が簡単になります(次項ではこちらの例を使用しています)。

for item in item_list:
    listbox.insert(tkinter.END, item)

そして、Listbox選択時に発生するListboxSelectイベントとget_selected関数を紐づけています。

listbox.bind("<<ListboxSelect>>", get_selected)

Listboxの各項目には0から始まる整数のindexが割り振られており、選択されている項目のindexはcurselectionメソッドで取得することができます。そしてそのindexをListboxのgetメソッドに渡して選択した項目を取得・ラベルに表示しています。

def get_selected(event):
    n = listbox.curselection()  #get index no.
    l["text"] = listbox.get(n)  #set label text

[↑ 目次へ]


【スポンサーリンク】


Listboxの項目を更新する方法

Listboxの項目を更新する方法を示します。先ほどの例のようにinsertメソッドを使用することもできますが、ここではlistvariableを用いた方法を紹介します。variable変数を更新するだけで表示項目も一緒に更新されるので、コードが分かりやすく処理も簡単でおすすめです。

以下、Entryを用いてListboxの項目を追加する例を示します。Entryに追加する項目入力してEnterキーを押すと、その値がListboxに追加されていきます。 Entryウィジェットの詳細はこちらを参照ください。

How to up add item to listbox (with listvariable)

実行するとListboxの下にEntryが表示されます。そこに項目を入力してEnterキーを押すと、Listboxにその内容が追加されます。

Entryを用いた項目の追加

この例では、初期値のリストをvariable変数であるlist_varにセットし、それをListbox生成時にlistvariableに渡しています。これにより、list_varを更新するとその内容がListboxにも反映されるようになります。

    item_list = ["Easy", "Normal", "Hard"]
    list_var = tkinter.StringVar(root, value=item_list)
    listbox = tkinter.Listbox(root, listvariable=list_var)

EntryでEnterキーが押された際に実行されるinput関数内で入力内容のリストへの追加とlist_varの更新を行っています。

def input(event):
    item_list.append(entry.get())   #add item
    list_var.set(item_list)         #set variable
    entry.delete(0, tkinter.END)    #clear entry

[↑ 目次へ]


【スポンサーリンク】


オプション・メソッド

主なオプション・メソッド 動作
listvariable variable変数の設定。変数が更新されるとその内容がListboxに反映される。
background(bg) 背景色(green, black, yellow, cyan, magenta, red, blue, white等)
borderwidth(bd) 境界幅
relief 縁の3D表示設定(flat, raised, sunken, groove, ridge)
foreground(fg) 文字の色の設定(green, black, yellow, cyan, magenta, red, blue, white等)
font フォントの設定(Times, Helvetica等)
.delete(index) 入力したindexの項目の削除
.curselection() 選択中の項目のindexを取得
.get(index) 入力したindexの値を取得
.insert(index, 値) 入力したindexに値を設定(リストの最後に追加する場合はtkinter.END)

[↑ 目次へ]


【スポンサーリンク】