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にその内容が追加されます。
この例では、初期値のリストを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) |
【スポンサーリンク】