Tkinter 元件詳解之Scrollbar

Scrollbar(滾動條)元件用於滾動一些元件的可見範圍,根據方向可分為垂直滾動條和水平滾動條。Scrollbar 元件常常被用於實現文字、畫布和列表框的滾動。

何時使用 Scrollbar 元件?

Scrollbar 元件通常幾乎與 Text 元件、Canvas 元件和 Listbox 元件一起使用,水平滾動條還能跟 Entry 元件配合。

用法

下邊例子我們演示如何使用垂直滾動條。為了在某個元件上安裝垂直滾動條,你需要做兩件事:

1. 設定該元件的 yscrollbarcommand 選項為 Scrollbar 元件的 set() 方法;

2. 設定 Scrollbar 元件的 command 選項為該元件的 yview() 方法。

import tkinter as tk
 
root = tk.Tk()

sb = tk.Scrollbar(root)
sb.pack(side="right", fill="y")

lb = tk.Listbox(root, yscrollcommand=sb.set)

for i in range(1000):
    lb.insert("end", str(i))

lb.pack(side="left", fill="both")

sb.config(command=lb.yview)
 
root.mainloop()

分析:當 Listbox 元件的可視範圍發生改變的時候,Listbox 元件通過呼叫 set() 方法通知 Scrollbar 元件。而當用戶操縱滾動條的時候,將自動呼叫 Listbox 元件的 yview() 方法。

新增水平滾動條方法跟上邊一樣,只是將 yscrollcommand 改為 xscrollcommand,yview 改為 xview 即可。

引數

Scrollbar(master=None, **options) (class)

master -- 父元件

**options -- 元件選項,下方表格詳細列舉了各個選項的具體含義和用法:

選項 含義
activebackground 1. 指定當滑鼠在上方飄過的時候滑塊和箭頭的背景顏色
2. 預設值由系統指定
activerelief 1. 指定當滑鼠在上方飄過的時候滑塊的樣式
2. 預設值是 "raised"
3. 可以選擇 "flat","sunken","groove","ridge"
background 1. 指定背景顏色
2. 預設值由系統指定
bg 跟 background 一樣
borderwidth 1. 指定邊框寬度
2. 預設值是 0
bd 跟 borderwidth 一樣
command 1. 當滾動條更新時回撥的函式
2. 通常的是指定對應元件的 xview() 或 yview() 方法
cursor 1. 指定當滑鼠在上方飄過的時候的滑鼠樣式
2. 預設值由系統指定
elementborderwidth 1. 指定滾動條和箭頭的邊框寬度
2. 預設值是 -1(表示使用 borderwidth 選項的值)
highlightbackground 1. 指定當滾動條沒有獲得焦點的時候高亮邊框的顏色
2. 預設值由系統指定
highlightcolor 1. 指定當滾動條獲得焦點的時候高亮邊框的顏色
2. 預設值由系統指定
highlightthickness 1. 指定高亮邊框的寬度
2. 預設值是 0(不帶高亮邊框)
jump 1. 指定當使用者拖拽滾動條時的行為
2. 預設值是 False,滾動條的任何一絲變動都會即刻呼叫 command 選項指定的回撥函式
3. 設定為 True 則當用戶鬆開滑鼠才呼叫
orient 1. 指定繪製 "horizontal"(垂直滾動條)還是 "vertical"(水平滾動條)
2. 預設值是 VERTICAL
relief 1. 指定邊框樣式
2. 預設值是 "sunken"
3. 可以選擇 "flat","raised","groove","ridge"
repeatdelay 1. 該選項指定滑鼠左鍵點選滾動條凹槽的響應時間
2. 預設值是 300(毫秒)
repeatinterval 1. 該選項指定滑鼠左鍵緊按滾動條凹槽時的響應間隔
2. 預設值是 100(毫秒)
takefocus 1. 指定使用 Tab 鍵可以將焦點移到該 Scrollbar 元件上
2. 預設是開啟的,可以將該選項設定為 False 避免焦點在此元件上
troughcolor 1. 指定凹槽的顏色
2. 預設值由系統指定
width 1. 指定滾動條的寬度
2. 預設值是 16 畫素

方法

activate(element) 
-- 顯示 element 引數指定的元素的背景顏色和樣式
-- element 引數可以設定為:"arrow1"(箭頭1),"arrow2"(箭頭2)或 "slider"(滑塊)

delta(deltax, deltay)
-- 給定一個滑鼠移動的範圍 deltax 和 deltay(畫素為單位,deltax 表示水平移動量,deltay 表示垂直移動量),然後該方法返回一個浮點型別的值(範圍 -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)
-- 返回一個字串表示指定位置下(如果有的話)的滾動條部件
-- 返回值可以是:"arrow1"(箭頭1),"arrow2"(箭頭2)、"slider"(滑塊)或 ""(啥都沒有)

set(*args)
-- 設定當前滾動條的位置
-- 如果設定則需要兩個引數 (first, last),first 表示當前滑塊的頂端或左端的位置,last 表示當前滑塊的底端或右端的位置(範圍 0.0 ~ 1.0)