1. 程式人生 > >Python的GUI程式設計(六)Scale(數值範圍)

Python的GUI程式設計(六)Scale(數值範圍)

Tkinter 中的 Scale 控制元件是一種可供使用者通過拖動指示器改變變數值的控制元件. 這種控制元件可以水平放置, 也可以豎直放置. 

可以在使用者介面中放置一個 Scale 控制元件, 使用者通過拖動該控制元件就可以在某個取值範圍內選擇一個合適的值. Scale 控制元件可以設定最大最小值以確定取值範圍. 我們也可以改變 Scale 控制元件的放置方式, 使其水平或豎直放置. 當需要使用者在一個範圍內選擇一個值時, Scale 控制元件比 Entry 控制元件更合適.

簡單程式:

from Tkinter import *
root=Tk()

Scale(root).pack()

root.mainloop()
預設的情況:最小值0,最大值100,步長為1
改變這三個引數,生成 一個水平Scale,最小值為-1000,最大值為1000,步距值為10
from Tkinter import *
root=Tk()
root.geometry('200x200')
Scale(root,from_=-1000,to=1000,resolution=10,orient=HORIZONTAL).pack()

root.mainloop()
from_ ,設定最大值;to ,設定最小值;resolution ,設定步距值;orient = HORIZONTAL #設定水平方向
注意from_的使用方式,在其後添加了"_",避免與關鍵字from的衝突

Scale
繫結變數並顯示在Entry中
from Tkinter import *
root=Tk()
root.geometry('200x100')

v=IntVar()
Entry(root,textvariable=v,width=6).pack()
# variable = v #繫結變數
Scale(root,from_=-1000,to=1000,resolution=10,orient=HORIZONTAL,variable=v).pack()

root.mainloop()

回撥函式的使用與上面作用一樣
from Tkinter import *
root=Tk()
root.geometry('200x100')

v=IntVar()

def CallOn(text):
    return text
Entry(root,textvariable=str(CallOn(v)),width=6).pack()

# variable = v #繫結變數
Scale(root,from_=-1000,to=1000,resolution=10,orient=HORIZONTAL,variable=v,command=CallOn).pack()

root.mainloop()

控制顯示位數,可以理解為:Scale的值為一整形,在輸出顯示時,它將會被轉化為一字串,如1.2轉化為1.2或1.2000都是可以的
屬性digits是控制顯示的數字位數,將上面的例子中的資料以8位形式顯示,在最後一位會新增一個0
from Tkinter import *
root=Tk()
root.geometry('200x100')

v=IntVar()

def CallOn(text):
    return text
Entry(root,textvariable=str(CallOn(v)),width=8).pack()

# variable = v #繫結變數
Scale(root,from_=0,to=100,resolution=0.0001,orient=HORIZONTAL,variable=v,command=CallOn,digits=8).pack()

root.mainloop()
設定Scale的標籤屬性label
from Tkinter import *
root=Tk()
root.geometry('200x100')

v=IntVar()

def CallOn(text):
    return text
Entry(root,textvariable=str(CallOn(v)),width=8).pack()

# variable = v #繫結變數
Scale(root,label='choice',from_=0,to=100,resolution=0.0001,orient=HORIZONTAL,variable=v,command=CallOn,digits=8).pack()

root.mainloop()

label設定的值會顯示在水平Scale的上方,用於提示資訊
設定/取得Scale的值
set()與get()
from Tkinter import *
root=Tk()
root.geometry('200x100')

v=IntVar()

def CallOn(text):
    print S.get()

S=Scale(root,label='choice',from_=0,to=100,resolution=0.0001,orient=HORIZONTAL,variable=v,digits=8,command=CallOn)

#初始值
S.set(50)
S.pack()
root.mainloop()

 tickinterval 選項被設定為一個數值, 拖動時的選擇值將會變為該數值的倍數
在 Scale 控制元件被豎直放置時, length 引數表示拖動條高度; 在 Scale 控制元件被水平放置時, length 引數表示拖動條長度.
from Tkinter import *
root=Tk()
root.geometry('500x100')

v=IntVar()

def CallOn(text):
    print S.get()

S=Scale(root,label='choice',from_=0,to=100,tickinterval=6,orient=HORIZONTAL,variable=v,command=CallOn,length=300)

#初始值
S.set(50)
S.pack()
root.mainloop()