Tkinter 元件詳解(九):Scrollbar
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)