Python GUI程式設計實戰--Tkinter元件詳解:Scale
Scale元件
“Scale”小元件提供了一個圖形滑塊物件,允許您從特定比例中選擇值。
語法
Here is the simple syntax to create this widget −
w = Scale ( master, option, … )
Parameters
master − This represents the parent window.
options − Here is the list of most commonly used options for this widget. These options can be used as key-value pairs separated by commas.
選項和說明:
activebackground:滑鼠懸停在刻度上時的背景顏色。
bg:視窗小部件外部的背景顏色。
bd:槽和滑塊周圍3D邊界的寬度。預設值為2畫素。
command:每次移動滑塊時呼叫的過程。此過程將傳遞一個引數,即新的縮放值。如果滑塊快速移動,您可能無法獲得每個可能位置的回撥,但在結算時肯定會收到回撥。
cursor:如果將此選項設定為游標名稱(箭頭,點等),則當滑鼠游標超出比例時,滑鼠游標將更改為該模式。
digits:通過控制變數使程式讀取scale小部件中顯示的當前值。比例的控制變數可以是IntVar,DoubleVar(float)或StringVar。如果它是字串變數,則digits選項控制將數字刻度值轉換為字串時要使用的位數。
font:用於標籤和註釋的字型。
fg:用於標籤和註釋的文字顏色。
from_:浮點數或整數值,用於定義比例範圍的初始一端。
highlightbackground:當刻度沒有焦點時,焦點的顏色會突出顯示。
highlightcolor:當焦點具有焦點時,焦點的顏色會突出顯示。
label:設定為標籤的文字,可以在縮放小部件中顯示標籤。如果刻度為水平,則標籤顯示在左上角;如果是垂直,則標籤顯示在右上角。預設為無標籤。
length:scale小部件的長度。如果比例為水平,則為x,如果為垂直,則為y。預設值為100畫素。
orient:如果希望平行於x軸,則設定orient = HORIZONTAL;或者,如果希望平行於y軸,則設定為= VERTICAL。預設為水平。
relief:指定標籤周圍的裝飾邊框的外觀。預設值為FLAT;。
repeatdelay:此選項控制滑塊開始在該方向上重複移動之前按鈕1在槽中按下的時間長度。預設值為repeatdelay = 300,單位為毫秒。
resolution:通常,使用者只能在整個單位中更改比例。將此選項設定為其他值以更改比例值的最小增量。例如,如果from_ = - 1.0和to= 1.0,並且您設定resolution=0.5,則比例將具有5個可能的值:-1.0,-0.5,0.0,+ 0.5和+1.0。
showvalue: 通常,刻度的當前值由滑塊以文字形式顯示(水平刻度上方,垂直刻度左側)。將此選項設定為0以禁止該標籤。
sliderlength:通常,滑塊沿刻度長度為30畫素。您可以通過將sliderlength選項設定為所需的長度。
state:通常,當scale小部件具有焦點時,響應滑鼠事件或鍵盤事件。設定state = DISABLED以使視窗小部件無響應。
takefocus:通常,scale小部件會讓焦點迴圈。如果您不想要此行為,請將此選項設定為0。
tickinterval :要顯示週期性刻度值,請將此選項設定為數字,並且刻度將顯示在該值的倍數上。例如,如果from_ = 0.0,to = 1.0,tickinterval = 0.25,標籤將沿著比例顯示為0.0,0.25,0.50,0.75和1.00。如果是水平的話,這些標籤會出現在比例下方預設值為0,禁止顯示刻度。
to:浮點數或整數值,定義比例範圍的一端;另一端由from_選項定義,如上所述。 to值可以大於或小於from_值。對於垂直比例,to值定義比例的底部;對於水平刻度,右端。
troughcolor:槽的顏色。
variable:此比例的控制變數(如果有)。控制變數可以來自IntVar類,DoubleVar(float)或StringVar。在後一種情況下,數值將轉換為字串。
width:小部件的寬度。如果刻度具有orient = HORIZONTAL,則這是垂直刻度的x維度和y維度。預設值為15畫素。
常用方法:
get():此方法返回比例的當前值。
set ( value ):設定比例的值。
實戰內容
1製作一個Scale,並能顯示選擇的值
from tkinter import *
window = Tk()
window.title("My Window")
window.geometry('200x180')
var = StringVar()
lb = Label(window, bg='yellow',width=20,
text='empty')
lb.pack()
def print_selection(v):
lb.config(text='You have selected ' + v)
sl = Scale(window, label='try me', # 設定標籤值
from_=5, # 設定最小值
to=11, # 設定最大值
orient=HORIZONTAL, # 設定水平方向,橫向(HORIZONTAL)和豎向(VERTICAL)
length=200, # 設定Scale大小
showvalue=1, # 設定選擇的值,預設為0(不顯示)或 1
tickinterval=2, # 設定區間
resolution=0.01, # 設定步距值
command=print_selection)
sl.pack()
window.mainloop()