今回は、tkinterでリストボックスとスクロールバーを使う方法を記しておきます。
Pythonのtkinterでボタンを出す方法
from tkinter import * from tkinter import ttk #---------------------------------------- #リストボックスを押した時の反応用関数 def select_lb(event): for i in lb.curselection(): print(str(i)+"番目を選択中") print("") #---------------------------------------- win = Tk() win.title('test') #---------------------------------------- #リストボックス listarray = ('項目1', '項目2', '項目3', '項目4', '項目5', '項目6', '項目7', '項目8', '項目9') txt = StringVar(value=listarray) lb= Listbox(win, listvariable=txt,width=30,height=6) lb.bind('<<ListboxSelect>>', select_lb) lb.grid(row=0, column=1) lb.configure(selectmode="extended") #---------------------------------------- #---------------------------------------- #スクロールバー scrollbar = ttk.Scrollbar(win,orient=VERTICAL,command=lb.yview) scrollbar.grid(row=0,column=2,sticky=(N,S)) #---------------------------------------- win.mainloop()
リストボックスとスクロールバーが入ってるウインドウを作成します。
このサンプルの場合表示はこのような物になります。
そして複数選択可能リストボックスとスクロールできるウインドウが表示されます。
動作としてはリストボックスで選択した項目の番号を表示させます。
tkinterのウインドウにリストボックスを設定する
tkinterのウインドウにリストボックスを追加します。
tkinterで作ったリストボックスを押した時の動作を作成
def select_lb(event): for i in lb.curselection(): print(str(i)+"番目を選択中") print("")
tkinterのウインドウに設置したリストボックスの選択を変えた時に動作する関数を作ります。
引数無し、返り値なしの関数を作っておきます。
for i in lb.curselection():でリストボックス内で現在選択されている項目を取得します。
tkinterのウインドウにリストボックスのオブジェクトを作る
listarray = ('項目1', '項目2', '項目3', '項目4', '項目5', '項目6', '項目7', '項目8', '項目9') txt = StringVar(value=listarray) lb= Listbox(win, listvariable=txt,width=30,height=6)
リストボックスのオブジェクト=Listbox( tkinterのオブジェクト , width=横幅 , height=縦幅 )
リストボックスのオブジェクトを作成します。
リストボックスのオブジェクトに操作された時に動作する関数を追加する
lb.bind('<<ListboxSelect>>', select_lb)
リストボックスのオブジェクト.bind(‘<<ListboxSelect>>’ , リストボックスの操作を実行する関数名 )
リストボックスが操作された時に動作する関数を設定します。
リストボックスの選択タイプを設定する
lb.configure(selectmode="extended")
リストボックスのオブジェクト( selectmode=”選択タイプを指定する文字列” )
リストボックスの単数選択か複数選択かを設定する。
browse | 単数選択・ドラックで選択も変わる |
single | 単数選択・ドラックで選択は変わらない |
multiple | 複数選択・クリックでON/OFFが切り替わる |
extended | 複数選択・ドラックで複数選択、CTLRキーを押しながらでも複数選択 |
tkinterのウインドウにリストボックスと連動するスクロールバーを設定する
tkinterのウインドウにスクロールバーを追加します。
スクロールバーを作成する
scrollbar = ttk.Scrollbar(win,orient=VERTICAL,command=lb.yview)
スクロールバーのオブジェクト=ttk.set( tkinterのオブジェクト , orient=VERTICAL , command=リストボックスのy軸 )
先に作ったリストボックスのY軸を結びつけてスクロールバーを作成します。
その他
ボタンのウインドウ内の位置や幅などはPythonのGUIのtkinterを使う方法2 ラベルとエデットボックスの設置方法を参考にしてください。