Python Code Notes

Information by python engineer

【tkinter】Listboxの使い方【Python】

f:id:vigilantPotato:20210523170445p:plain
Listboxはデータを一覧表示するためのウィジェットで、ユーザーが選択した項目の値を取得することができる。


【スポンサーリンク】


Listboxの概要

Listboxはアイテムリストを表示するためのウィジェットで、ユーザーが自由に項目を選択することができる。以下、Easy, Normal, Hardの3項目をListboxに表示し、クリックすると選択した項目の値をprint出力する例を示す。

import tkinter

#項目選択時に実行する関数
def show_selected(event):
    n = lb.curselection()   #選択項目のindex取得
    print(lb.get(n))        #indexを用いて値を取得

root = tkinter.Tk()

#Listboxの生成
lb = tkinter.Listbox(root)
lb.insert(0, "Easy")    #insert(index, 値)
lb.insert(1, "Normal")
lb.insert(2, "Hard")

#項目選択時にshow_selectedを実行
lb.bind(
    "<<ListboxSelect>>",
    show_selected,
    )
lb.pack()

root.mainloop()

Listboxの項目には0から始まる整数値のindexが割り振られ、insertメソッドにindexと値を渡すことで項目を設定することができる。以下、実行した結果を示す。

f:id:vigilantPotato:20210523170517p:plain
項目をクリックすると、選択した項目の値がprint出力される。項目クリック時に発生するListboxSelectイベントをshow_select関数と紐づけており、show_select関数内で選択した項目のindexをcurselectionメソッドで取得し、それをgetメソッドに渡すことで値を取得している。

[↑ 目次へ]


【スポンサーリンク】


選択した値をLabelに表示

選択した値をLabelに表示させる例を示す。

import tkinter

#項目選択時に実行する関数
def show_selected(event):
    n = lb.curselection()   #選択項目のindex取得
    var.set(lb.get(n))      #indexを用いて値を取得し、varにセット

root = tkinter.Tk()

#選択した値を格納する変数
var = tkinter.StringVar(root)

#表示用ラベル
l = tkinter.Label(
    root,
    textvariable=var,   #選択した値
    width=15,
    )
l.pack()

#Listboxの生成
lb = tkinter.Listbox(root)
value_list = ["Easy", "Normal", "Hard"] #値のリスト
for v in value_list:
    lb.insert(tkinter.END, v)   #値をセット

#項目選択時にshow_selectedを実行
lb.bind(
    "<<ListboxSelect>>",
    show_selected,
    )
lb.pack()

root.mainloop()

実行した結果を以下に示す。Listboxで選択した項目の値がLabelに表示される。上記の例では、表示する値をリスト化しておき、for文を用いて各値をListboxに設定している。insertメソッドのindexをtkinter.ENDにすることで、

f:id:vigilantPotato:20210523170547p:plain
variablesオブジェクトをLabelのtextvariableオプションに設定しておき、Listboxの項目クリック時に値をセットすることで、Labelに値を表示させている。

[↑ 目次へ]


【スポンサーリンク】


オプション・メソッド

主なオプション・メソッド 動作
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)

[↑ 目次へ]


【スポンサーリンク】