Python 入門

ホーム > Tkinter による GUI プログラミング > Scrollbar と Listbox

Scrollbar と Listbox

リストボックス など、内容が長くなるウィジェットは、 縦方向もしくは横方向にスクロールしたい場合があります。

ここではリストボックスを縦方向にスクロールするための、Scrollbar ウィジェットの使用例を示します。

ttk.Scrollbar

このスクリーンショットのように、リストボックスにはリストボックス内のすべてのオプションが見えている訳ではなく、 いくつかはスクロールして始めてみえるようになります。

スクロールバーは自動的に表示されるわけでは無く、ttk.Scrollbar を Listbox と関連付ける必要があります。

from tkinter import *
from tkinter import ttk

def button_click():
    show_selection()
    
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=button_click)
    button1.grid(row=1, column=0, columnspan=2)
    
    root.mainloop()

縦方向にスクロール可能なウィジェットは yview メソッドと yscrollcommand オプションを持っています。

スクロールバーとウィジェットを関連付けるためには Scrollbar の command に yview メソッドを設定し、 さらに ウィジェットの yscrollcommand オプションに Scrollbar の set メソッドを設定します。

横方向の場合はそれぞれ、xscrollcommand, xview メソッドなどとして、同様にします。

ウィンドウを伸縮させるには grid ジオメトリマネージャ をみてください。

ホーム > Tkinter による GUI プログラミング > Scrollbar と Listbox - Tkinter のウィジェット