滾動條部件的建立及其選項
滾動條部件中包含滑塊slider, 前後兩個箭頭arrow1, arrow2, 滑塊槽trough (分前後兩頭滑塊槽trough1/trough2), 滑塊的大小及位置代表可見的部份佔全部內容的比例及位置 (0.0 ~ 1.0).
import tkinter as tk
root = tk.Tk()
parent_widget = ...
scroll_bar = tk.Scrollbar(parent_widget, option, ...)
選項 | 說明 |
---|---|
activebackground | active 時的背景色 |
activerelief | active 時的滑塊花邊樣式,內定為 RAISED |
bg or background | 背景色,非 active 時滑塊及箭頭的顏色 |
bd or borderwidth | 滑塊槽框, 滑塊及箭頭框的寛度,內定滑塊槽無框, 滑塊及箭頭框的寛度為 2 點素 |
command | 滑塊位置改變時呼叫的程式 |
cursor | 當滑鼠移到部件時,所顯示的滑鼠圖示 |
elementborderwidth | 滑塊及箭頭框的寛度, 內定為 -1, 使用 bd or borderwidth 的值 |
highlightbackground | 非聚焦時的聚焦顏色 |
highlightcolor | 聚焦時的聚焦顏色 |
highlightthickness | 聚焦厚度,內定 1, 0 則無 |
jump | 是否立刻呼叫 command, 內定為 0, 每一小步都呼叫, 1 則直到釋到滑鼠按鍵才呼叫 |
orient | 水平或垂直滾動條, HORIZONTAL/VERTICAL |
relief | 花邊樣式,內定為 SUNKEN |
repeatdelay | 直到經過指定時間 (毫秒), 開始重複按下滑塊槽,內定 300ms |
repeatinterval | 重複間隔,以毫秒為單位重複按下滑塊槽,內定 100ms |
takefocus | TAB 鍵在部件是否會迴圈焦點,1 則會,內定為空字串,則僅在具有鍵繫結下迴圈焦點 |
troughcolor | 滑塊槽的顏色 |
width | 滾動條部件寛度,內定為 16 點素 |
滾動條部件的方法
方法 | 說明 |
---|---|
activate(element=None) | 返回滑鼠所在零件, ‘slider’/‘arrow1’/‘arrow2’/‘’ (其他), 或者設定聚焦在該零件 |
delta(dx, dy) | 如同滑鼠移動 (dx, dy), 返回目前滑塊相對移動量, 該值在 -1.0 ~ +1.0 |
fraction(x, y) | 返回相對於 (x, y) 位置的滑塊位置, 0.0 ~ +1.0 |
get() | 返回目前滑塊位置的前緣 a 與後緣 b, (a, b), 0.0 ~ +1.0 |
identify(x, y) | 返回 (x, y) 所在的零件, ‘slider’/‘arrow1’/‘arrow2’/‘trough1’/‘trough12’/‘’ (其他) |
set(first, last) | 要帶有滾動條的主部件, 其 xscrollcommnad/yscrollcommand 設為本方法, 本方法的引數同get方法返回的結果同意義 |
注: 移動滾動條並不會移動滾動其主部件.
滾動條部件的回撥
- command(tk.SCROLL, -1, tk.UINTS) 滾動條前移一小單位
- command(tk.SCROLL, 1, tk.UINTS) 滾動條後移一小單位
- command(tk.SCROLL, -1, tk.PAGES) 滾動條前移一小頁面
- command(tk.SCROLL, 1, tk.PAGES) 滾動條後移一小頁面
- command(tk.MOVETO, f) 滾動條移到相對位置 f: 0.0 ~ +1.0
設定主部件與滾動條部件的連結
- 主部件的 xscrollcommand/yscrollcommand 為滾動條部件的 set 方法
- 水平/垂直滾動條部件的 command 為主部件的 xview/yview 方法
- 水平/垂直滾動條部件的 grid 方法選項 sticky, 應該要設定為 EW/NS.
範例視窗及程式碼
import tkinter as tk
root = tk.Tk()
root.wm_title("Scrollbar Demo")
font = ('Courier New', 16, 'bold')
elements = ('List for House', 'List for Friend', 'List for Cash', 'List for Car',
'List for Motorcycle', 'List for Boat', 'List for Airplane')
x_scrollbar = tk.Scrollbar(root, orient=tk.HORIZONTAL)
x_scrollbar.grid(row=1, column=0, sticky=tk.E+tk.W)
y_scrollbar = tk.Scrollbar(root, orient=tk.VERTICAL)
y_scrollbar.grid(row=0, column=1, sticky=tk.N+tk.S)
list_box = tk.Listbox(root, font=font, selectmode=tk.MULTIPLE,
width=15, height=5, activestyle='dotbox', xscrollcommand=x_scrollbar.set,
yscrollcommand=y_scrollbar.set)
list_box.insert(tk.END, *elements)
list_box.grid(row=0, column=0, sticky=tk.N+tk.S+tk.E+tk.W)
x_scrollbar['command'] = list_box.xview
y_scrollbar['command'] = list_box.yview
root.mainloop()
本作品採用《CC 協議》,轉載必須註明作者和本文連結