Tkinter Scrollbar と Listbox

Tkinter の Listbox で Scrollbar を使う方法

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

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

ttk.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 ジオメトリマネージャ をみてください。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門