「Python3」Tkinter Ver.8.6(Scrollbarの設定方法)

Tkinter Python

Scrollbarとは?

Scrollbarは、表示スペースよりはるかに大きいウィジェット(リストの数が多いListboxなど)に対して、全ての部分を参照できるようにするために利用されます。

Scrollbarの実装

<ソースコード>
from tkinter import *
from tkinter import ttk

def button_push():
    for i in listbox.curselection():
        print(listbox.get(i))

#メインウィンドウ生成
root = Tk()
#ウィンドウのタイトル
root.title('Application')
#Frame生成
frame = ttk.Frame(root)
List = ('Sunday','Manday','Tuesday','Wednesday','Thursday','Friday','Saturday')
val = StringVar(value = List)
#Listbox生成
listbox = Listbox(
        frame,
        listvariable = val,
        selectmode = 'browse', #browse...単一 / extended...複数
        height = 3, #表示する数
        )
#Scrollbar生成
scrollbar = ttk.Scrollbar(
        frame,
        orient = VERTICAL,
        command = listbox.yview
        )
listbox['yscrollcommand'] = scrollbar.set

import pprint
pprint.pprint(scrollbar.config())


#Button生成
button = ttk.Button(
        frame,
        text = 'OK', #表示する文字
        width = str('OK'), #横幅
        padding = (20, 00), #隙間
        command = button_push #押されたら実行する関数
        )

#ウィンドウ内にFrameを表示
frame.grid()
#Frame内にListboxを表示
listbox.grid(column=0, row=0, sticky=(N,W,E,S))
#Frame内にScrollbarを表示
scrollbar.grid(column=1, row=0, sticky=(N,S))
#Frame内にButtonを表示
button.grid()

#ウィンドウ表示
root.mainloop()
<出力結果>

Scrollbar 説明01

Saturday

Listboxの中から1つを選択し、選択した状態でButtonを押すことで、コンソールに選択した値を出力するようになっています。
“height = 3″と指定することで、Listboxの表示する中身の数を3に設定します。
“orient = VERTICAL”と指定することで、垂直方向のScrollbarが表示されます。また、”orient = HORIZONTAL”と指定することで、水平方向のScrollbarが表示されます。
“command = listbox.yview”と指定することで、Listboxのy座標にScrollbarが表示されます。Listboxのx座標に表示したい場合は、”command = listbox.xview”と指定する必要があります。
また、”command = listbox.yview”と指定するだけでは、Scrollbarを利用してListbox全てを参照することができません。”listbox[‘yscrollcommand’] = scrollbar.set”と指定することで、Scrollbarを利用して、Listbox全てを参照することができます。

Scrollbarのオプションを表にまとめます。

オプション 説明
orient 方向指定
水平…「HORIZONTAL」 or 「horizontal」
垂直…「VERTICAL」 or 「”vertical”」
orient = 「HORIZONTAL
orient = VERTICAL
command メソッドを指定 command = listbox.xview
command = listbox.yview
<ソースコード(横方向)>
scrollbar = ttk.Scrollbar(
        frame,
        orient = HORIZONTAL,
        command = listbox.xview
        )
listbox['xscrollcommand'] = scrollbar.set
<ソースコード(縦方向)>
scrollbar = ttk.Scrollbar(
        frame,
        orient = VERTICAL,
        command = listbox.yview
        )
listbox['yscrollcommand'] = scrollbar.set

コメント

タイトルとURLをコピーしました