Tkinter Scrollbar と Listbox
Tkinter の Listbox で Scrollbar を使う方法
リストボックス など、内容が長くなるウィジェットは、 縦方向もしくは横方向にスクロールしたい場合があります。
ここではリストボックスを縦方向にスクロールするための、Scrollbar ウィジェットの使用例を示します。
このスクリーンショットのように、リストボックスにはリストボックス内のすべてのオプションが見えている訳ではなく、 いくつかはスクロールして始めてみえるようになります。
スクロールバーは自動的に表示されるわけでは無く、ttk.Scrollbar を Listbox と関連付ける必要があります。
from tkinter import *
from tkinter import ttk
def show_selection():
for i in lb.curselection():
print(lb.get(i))
if __name__ == '__main__':
root = Tk()
root.title('Scrollbar 1')
# Frame
frame1 = ttk.Frame(root, padding=10)
frame1.grid()
# Listbox
currencies = (
'JPY', 'USD', 'EUR',
'CNY', 'MXN', 'CAD')
v1 = StringVar(value=currencies)
lb = Listbox(frame1, listvariable=v1, height=3)
lb.grid(row=0, column=0)
# Scrollbar
scrollbar = ttk.Scrollbar(
frame1,
orient=VERTICAL,
command=lb.yview)
lb['yscrollcommand'] = scrollbar.set
scrollbar.grid(row=0, column=1, sticky=(N, S))
# Button
button1 = ttk.Button(
frame1, text='OK',
command=lambda: show_selection())
button1.grid(row=1, column=0, columnspan=2)
root.mainloop()
縦方向にスクロール可能なウィジェットは yview メソッドと yscrollcommand オプションを持っています。
スクロールバーとウィジェットを関連付けるためには Scrollbar の command に yview メソッドを設定し、 さらに ウィジェットの yscrollcommand オプションに Scrollbar の set メソッドを設定します。
横方向の場合はそれぞれ、xscrollcommand, xview メソッドなどとして、同様にします。
ウィンドウを伸縮させるには grid ジオメトリマネージャ をみてください。