Tkinter 元件詳解之Scale

Scale(刻度)元件看起來像是一個帶資料的 Scrollbar(滾動條)元件,但事實上它們是不同的兩個東東。Scale 元件允許用於通過滑動滑塊來選擇一個範圍內的數字。你可以控制該元件的最大值、最小值,以及解析度。

何時使用 Scale 元件?

當你希望使用者輸入某個範圍內的一個數值,使用 Scale 元件可以很好的代替 Entry 元件。

用法

建立一個指定範圍的 Scale 元件其實非常容易,你只需要指定它的 from 和 to 兩個選項即可。但由於 from 本身是 Python 的關鍵字,所以為了區分需要在後邊緊跟一個下劃線:from_

import tkinter as tk
 
root = tk.Tk()

tk.Scale(root, from_=0, to=42).pack()
tk.Scale(root, from_=0, to=200, orient="horizontal").pack()
 
root.mainloop()

使用 get() 方法可以獲取當前滑塊的位置:

import tkinter as tk
 
root = tk.Tk()

s1 = tk.Scale(root, from_=0, to=42)
s1.pack()

s2 = tk.Scale(root, from_=0, to=200, orient="horizontal")
s2.pack()

def show():
        print(s1.get(), s2.get())

tk.Button(root, text="獲得位置", command=show).pack()
 
root.mainloop()

然後,你可以通過 resolution 選項控制解析度(步長),通過 tickinterval 選項設定刻度:

import tkinter as tk
 
root = tk.Tk()

tk.Scale(root, from_=0, to=42, tickinterval=5, length=200, \
      resolution=5, orient="vertical").pack()
tk.Scale(root, from_=0, to=200, tickinterval=10, length=600, \
      orient="horizontal").pack()
 
root.mainloop()

引數

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

master -- 父元件

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

選項 含義
activebackground 1. 指定當滑鼠在上方飄過的時候滑塊的背景顏色
2. 預設值由系統指定
background 1. 滾動槽外部的背景顏色
2. 預設值由系統指定
bg 跟 background 一樣
bigincrement 1. 設定“大”增長量
2. 該選項設定增長量的大小
3. 預設值是 0,增長量為範圍的 1/10
borderwidth 1. 指定邊框寬度
2. 預設值是 2
bd 跟 borderwidth 一樣
command 1. 指定一個函式,每當滑塊發生改變的時候都會自動呼叫該函式
2. 該函式有一個唯一的引數,就是最新的滑塊位置
3. 如果滑塊快速地移動,函式可能無法獲得每一個位置,但一定會獲得滑塊停下時的最終位置
cursor 1. 指定當滑鼠在上方飄過的時候的滑鼠樣式
2. 預設值由系統指定
digits 1. 設定最多顯示多少位數字
2. 補充註釋:例如設定 from 選項為 0,to 選項為 20,digits 選項設定為 5,那麼滑塊的範圍就是在 0.000 ~ 20.000 直接滑動
3. 預設值是 0(不開啟)
foreground 1. 指定滑塊左側的 Label 和刻度的文字顏色
2. 預設值由系統指定
fg 跟 foreground 一樣
font 1. 指定滑塊左側的 Label 和刻度的文字字型
2. 預設值由系統指定
from 1. 設定滑塊最頂(左)端的位置
2. 預設值是 0
highlightbackground 1. 指定當 Scale 沒有獲得焦點的時候高亮邊框的顏色
2. 預設值由系統指定
highlightcolor 1. 指定當 Scale 獲得焦點的時候高亮邊框的顏色
2. 預設值由系統指定
highlightthickness 1. 指定高亮邊框的寬度
2. 預設值是 0(不帶高亮邊框)
label 1. 你可以在垂直的 Scale 元件的頂端右側(水平的話是左端上方)顯示一個文字標籤
2. 預設值是不顯示標籤
length 1. Scale 元件的長度
2. 預設值是 100 畫素
orient 1. 設定該 Scale 元件是水平放置("horizontal")還是垂直放置("vertical")
2. 預設值是 "vertical"
relief 1. 指定邊框樣式 
2. 預設值是 "sunken"
3. 可以選擇 "flat","raised","groove" 和 "ridge"
repeatdelay 1. 該選項指定滑鼠左鍵點選滾動條凹槽的響應時間
2. 預設值是 300(毫秒)
repeatinterval 1. 該選項指定滑鼠左鍵緊按滾動條凹槽時的響應間隔
2. 預設值是 100(毫秒)
resolution 1. 指定 Scale 元件的解析度(步長,即在凹槽點選一下滑鼠左鍵它移動的數量)
2. 補充註釋:例如設定 from 選項為 0,to 選項為 20,resolution 選項設定為 0.1 的話,那麼每點選一下滑鼠就是在 0.0 ~ 20.0 之間以 0.1 的步長移動
3. 預設值是 1
showvalue 1. 設定是否顯示滑塊旁邊的數字
2. 預設值為 True
sliderlength 1. 設定滑塊的長度
2. 預設值是 30 畫素
sliderrelief 1. 設定滑塊的樣式
2. 預設值是 "raised"
3. "flat","sunken","groove" 和 "ridge"
state 1. 預設情況下 Scale 元件支援滑鼠事件和鍵盤事件,可以通過設定該選項為 "disabled" 來禁用此功能
2. 預設值是 "normal"
takefocus 1. 指定使用 Tab 鍵是否可以將焦點移動到該 Scale 元件上
2. 預設是開啟的,可以通過將該選項設定為 False 避免焦點落在此元件上
tickinterval 1. 設定顯示的刻度,如果設定一個值,那麼就會按照該值的倍數顯示刻度
2. 預設值是不顯示刻度
to 1. 設定滑塊最底(右)端的位置
2. 預設值是 100
troughcolor 1. 設定凹槽的顏色
2. 預設值由系統指定
variable 1. 指定一個與 Scale 元件相關聯的 Tkinter 變數,該變數存放滑塊最新的位置
2. 當滑塊移動的時候,該變數的值也會發生相應的變化
width 1. 指定 Scale 元件的寬度
2. 預設值是 15 畫素

方法

coords(value=None)
-- 獲得當前滑塊的位置對應 Scale 元件左上角的相對座標
-- 如果設定 value 引數,則返回當滑塊所在該位置時的相對座標

get()
-- 獲得當前滑塊的位置
-- Tkinter 會盡可能地返回一個整型值,否則返回一個浮點型值

identify(x, y)
-- 返回一個字串表示指定位置下(如果有的話)的 Scale 部件
-- 返回值可以是:"slider"(滑塊),"trough1"(左側或上側的凹槽),"trough2"(右側或下側的凹槽)或 ""(啥都沒有)

set(value)
-- 設定 Scale 元件的值(滑塊的位置)