一命浴、介紹
Spinbox
組件(Tk8.4 新增)是 Entry 組件的變體娄猫,用于從一些固定的值中選取一個(gè)。
二生闲、使用
Spinbox
組件跟 Entry 組件用法非常相似媳溺,主要區(qū)別是使用Spinbox
組件,你可以通過范圍或者元組指定允許用戶輸入的內(nèi)容碍讯。
from tkinter import *
root = Tk()
w = Spinbox(root, from_=0, to=10)
w.pack()
mainloop()
你還可以通過元組指定允許輸入的值:
from tkinter import *
root = Tk()
w = Spinbox(root, values= ("小甲魚", "~風(fēng)介~", "wei_Y", "戴宇軒"))
w.pack()
mainloop()
三悬蔽、參數(shù)
Spinbox(master=None, **options) (class)
master
-- 父組件
**options
-- 組件選項(xiàng),下方表格詳細(xì)列舉了各個(gè)選項(xiàng)的具體含義和用法:
選項(xiàng) | 含義 |
---|---|
activebackground | 設(shè)置當(dāng) Spinbox 處于 ACTIVE 狀態(tài)下的背景顏色 |
background | 1. 設(shè)置背景顏色 2. 默認(rèn)值由系統(tǒng)指定 |
bg | 跟 background 一樣 |
borderwidth | 1. 設(shè)置邊框?qū)挾?br>2. 默認(rèn)值是 1 或 2 像素 |
buttonbackground | 設(shè)置調(diào)節(jié)箭頭的背景顏色 |
buttoncursor | 指定當(dāng)鼠標(biāo)在調(diào)節(jié)箭頭上方的鼠標(biāo)樣式 |
buttondownrelief | 1. 指定向下調(diào)節(jié)箭頭的樣式 2. 默認(rèn)值是 RAISED 3. 還可以設(shè)置為 FLAT捉兴,SUNKEN蝎困,GROOVE 和 RIDGE |
buttonup | 1. 指定向上調(diào)節(jié)箭頭的樣式 2. 默認(rèn)值是 RAISED 3. 還可以設(shè)置為 FLAT,SUNKEN倍啥,GROOVE 和 RIDGE |
command | 1. 指定一個(gè)函數(shù)禾乘,當(dāng)用戶點(diǎn)擊調(diào)節(jié)箭頭的時(shí)候?qū)⒆詣诱{(diào)用該函數(shù) 2. 注意:當(dāng)用戶直接在輸入框中輸入數(shù)據(jù)時(shí)并不會觸發(fā)該函數(shù) |
cursor | 1. 指定當(dāng)鼠標(biāo)在 Spinbox 上飄過的時(shí)候的鼠標(biāo)樣式 2. 默認(rèn)值由系統(tǒng)指定 |
disabledbackground | 設(shè)置當(dāng) Spinbox 處于 DISABLED 狀態(tài)下的背景顏色 |
disabledforeground | 設(shè)置當(dāng) Spinbox 處于 DISABLED 狀態(tài)下的前景顏色 |
exportselection | 1. 指定選中的文本是否可以被復(fù)制到剪貼板 2. 默認(rèn)值是 True 3. 可以修改為 False 表示不允許復(fù)制文本 |
font | 1. 指定 Spinbox 中文本的字體 2. 默認(rèn)值由系統(tǒng)指定 |
foreground | 1. 設(shè)置前景(文本)顏色 2. 默認(rèn)值由系統(tǒng)指定 |
fg | 跟 foreground 一樣 |
format | 1. 使用該選項(xiàng)設(shè)置選擇數(shù)值的樣式(from_ 和 to 指定范圍,用戶自行輸入的不算) 2. 例如 format='%10.4f' 表示顯示的數(shù)值占 10 位虽缕,小數(shù)點(diǎn)后保留 4 位 |
from_ | 1. 該選項(xiàng)和 to 選項(xiàng)共同指定一個(gè)范圍的數(shù)值 2. increment 選項(xiàng)設(shè)置每次點(diǎn)擊調(diào)節(jié)箭頭遞增(遞減)的精度 |
highlightbackground | 1. 指定當(dāng) Spinbox 沒有獲得焦點(diǎn)的時(shí)候高亮邊框的顏色 2. 默認(rèn)值由系統(tǒng)指定 |
highlightcolor | 1. 指定當(dāng) Spinbox 獲得焦點(diǎn)的時(shí)候高亮邊框的顏色 2. 默認(rèn)值由系統(tǒng)指定 |
highlightthickness | 指定高亮邊框的寬度 |
increment | 1. 該選項(xiàng)指定當(dāng)用戶每次點(diǎn)擊調(diào)節(jié)箭頭的時(shí)候遞增(遞減)的精度 2. 例如 from_=1, to=10, increment=0.5始藕,那么每次用戶點(diǎn)擊調(diào)節(jié)箭頭的時(shí)候,輸入框中的數(shù)字遞增(遞減)0.5 |
insertbackground | 指定輸入光標(biāo)的顏色 |
insertborderwidth | 1. 指定輸入光標(biāo)的邊框?qū)挾?br>2. 如果被設(shè)置為非 0 值,光標(biāo)樣式會被設(shè)置為 RAISED 3. 小甲魚溫馨提示:將 insertwidth 設(shè)置大一點(diǎn)才能看到效果哦 |
insertofftime | 1. 該選項(xiàng)控制光標(biāo)的閃爍頻率(滅) 2. 單位是毫秒 |
insertontime | 1. 該選項(xiàng)控制光標(biāo)的閃爍頻率(亮) 2. 單位是毫秒 |
insertwidth | 1. 指定光標(biāo)的寬度 2. 默認(rèn)值是 1 或 2 像素 |
invalidcommand | 1. 指定當(dāng)輸入框輸入的內(nèi)容“非法”時(shí)調(diào)用的函數(shù) 2. 也就是指定當(dāng) validateCommand 選項(xiàng)指定的函數(shù)返回 False 時(shí)的函數(shù) 3. 詳見 Entry 組件最下方小甲魚關(guān)于驗(yàn)證詳解 |
invcmd | 跟 invalidcommand 一樣 |
justify | 1. 定義如何對齊輸入框中的文本 2. 使用 LEFT伍派,RIGHT 或 CENTER 3. 默認(rèn)值是 LEFT |
readonlybackground | 設(shè)置當(dāng) Spinbox 處于 "readonly" 狀態(tài)下的背景顏色 |
relief | 1. 指定邊框樣式 2. 默認(rèn)值是 SUNKEN 3. 其他可以選擇的值是 FLAT弟塞,RAISED,GROOVE 和 RIDGE |
repeatdelay | 1. 該選項(xiàng)指定鼠標(biāo)左鍵點(diǎn)擊滾動條凹槽的響應(yīng)時(shí)間 2. 默認(rèn)值是 400(毫秒) |
repeatinterval | 1. 該選項(xiàng)指定鼠標(biāo)左鍵緊按滾動條凹槽時(shí)的響應(yīng)間隔 2. 默認(rèn)值是 100(毫秒) |
selectbackground | 1. 指定輸入框的文本被選中時(shí)的背景顏色 2. 默認(rèn)值由系統(tǒng)指定 |
selectborderwidth | 1. 指定輸入框的文本被選中時(shí)的邊框?qū)挾龋ㄟx中邊框) 2. 默認(rèn)值由系統(tǒng)指定 |
selectforeground | 1. 指定輸入框的文本被選中時(shí)的字體顏色 2. 默認(rèn)值由系統(tǒng)指定 |
state | 1. Spinbox 組件可以設(shè)置的狀態(tài):NORMAL拙已,DISABLED 或 "readonly"(注意决记,這個(gè)是字符串。它跟 DISABLED 相似倍踪,但它支持選中和拷貝系宫,只是不能修改,而 DISABLED 是完全禁止) 2. 默認(rèn)值是 NORMAL 3. 注意建车,如果此選項(xiàng)設(shè)置為 DISABLED 或 "readonly"扩借,那么調(diào)用 insert() 和 delete() 方法都會被忽略 |
takefocus | 1. 指定使用 Tab 鍵可以將焦點(diǎn)移動到輸入框中 2. 默認(rèn)是開啟的,可以將該選項(xiàng)設(shè)置為 False 避免焦點(diǎn)在此輸入框中 |
textvariable | 1. 指定一個(gè)與輸入框的內(nèi)容相關(guān)聯(lián)的 Tkinter 變量(通常是 StringVar) 2. 當(dāng)輸入框的內(nèi)容發(fā)生改變時(shí)缤至,該變量的值也會相應(yīng)發(fā)生改變 |
to | 1. 該選項(xiàng)和 from_ 選項(xiàng)共同指定一個(gè)范圍的數(shù)值 2. increment 選項(xiàng)設(shè)置每次點(diǎn)擊調(diào)節(jié)箭頭遞增(遞減)的精度 |
validate | 1. 該選項(xiàng)設(shè)置是否啟用內(nèi)容驗(yàn)證 2. 詳見 Entry 組件最下方小甲魚關(guān)于驗(yàn)證詳解 |
validatecommand | 1. 該選項(xiàng)指定一個(gè)驗(yàn)證函數(shù)潮罪,用于驗(yàn)證輸入框內(nèi)容是否合法 2. 驗(yàn)證函數(shù)需要返回 True 或 False 表示驗(yàn)證結(jié)果 3. 注意,該選項(xiàng)只有當(dāng) validate 的值非 "none" 時(shí)才有效 3. 詳見本內(nèi)容最下方小甲魚關(guān)于驗(yàn)證詳解 |
vcmd | 跟 validatecommand 一樣 |
values | 1. 提供兩個(gè)方法限定用戶輸入的內(nèi)容领斥,一種是通過 from_ 和 to 選項(xiàng)設(shè)置范圍嫉到,另一種則是將可選值以元組的形式賦值給 values 選項(xiàng) 2. 例如 values= ("小甲魚", "風(fēng)介", "wei_Y", "戴宇軒") 則允許用戶在這 4 個(gè)字符串中選擇 |
width | 1. 設(shè)置輸入框的寬度,以字符為單位 2. 默認(rèn)值是 20 3. 對于變寬字體來說月洛,組件的實(shí)際寬度等于字體的平均寬度乘以 width 選項(xiàng)的值 |
wrap | 1. 默認(rèn)情況下(False)何恶,當(dāng)輸入框中的值是第一個(gè)(最后一個(gè))的時(shí)候,再點(diǎn)擊向上(向下)調(diào)節(jié)箭頭嚼黔,內(nèi)容不會改變 2. 當(dāng)該選項(xiàng)的值設(shè)置為 True细层,則當(dāng)達(dá)到第一個(gè)(最后一個(gè))值的時(shí)候,再點(diǎn)擊向上(向下)調(diào)節(jié)箭頭唬涧,內(nèi)容將回到最后一個(gè)(第一個(gè)) 3. 小甲魚注:其實(shí)就是開啟循環(huán)的意思_ |
xscrollcommand | 1. 與 scrollbar(滾動條)組件相關(guān)聯(lián) 2. 如果你覺得用戶輸入的內(nèi)容會超過該組件的輸入框?qū)挾纫呤辏敲纯梢钥紤]設(shè)置該選項(xiàng) 3. 使用方法可以參考:Scrollbar 組件 |
四、方法
bbox(index)
-- 返回一個(gè) 4 元組(x1, y1, x2, y2)用于描述輸入框中 index 參數(shù)指定的字符所在的矩形范圍
delete(first, last=None)
-- 刪除參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)的所有內(nèi)容
-- 如果忽略 last 參數(shù)碎节,表示刪除 first 參數(shù)指定的選項(xiàng)
-- 使用 delete(0, END) 實(shí)現(xiàn)刪除輸入框的所有內(nèi)容
get()
-- 返回 Spinbox 當(dāng)前的值
icursor(index)
-- 將光標(biāo)移動到 index 參數(shù)指定的位置
-- 這同時(shí)也會設(shè)置 INSERT 的值
identify(x, y)
-- 返回給定坐標(biāo)(x, y)在 Spinbox 中對應(yīng)的元素名字
-- 返回值可以是:"none"(什么都不是)捧搞,"buttondown"(向下調(diào)節(jié)箭頭),"buttonup"(向上調(diào)節(jié)箭頭)或 "entry"(輸入框)
index(index)
-- 返回與 index 參數(shù)相應(yīng)的選項(xiàng)的序號(例如 e.index(END))
insert(index, text)
-- 將 text 參數(shù)的內(nèi)容插入到 index 參數(shù)指定的位置
-- 使用 insert(INSERT, text) 將 text 參數(shù)指定的字符串插入到光標(biāo)的位置
-- 使用 insert(END, text) 將 text 參數(shù)指定的字符串插入到輸入框的末尾
invoke(element)
-- 調(diào)用該方法的效果相當(dāng)于用戶點(diǎn)擊調(diào)節(jié)箭頭
-- element 參數(shù)的值必須是 "buttonup" 或 "buttondown"
scan_dragto(x)
-- 見下方 scan_mark(x)
scan_mark(x)
-- 使用這種方式來實(shí)現(xiàn)輸入框內(nèi)容的滾動
-- 需要將鼠標(biāo)按下事件綁定到 scan_mark(x) 方法(x 是鼠標(biāo)當(dāng)前的水平位置)钓株,然后再將 <motion> 事件綁定到 scan_dragto(x) 方法(x 是鼠標(biāo)當(dāng)前的水平位置)实牡,就可以實(shí)現(xiàn)輸入框在當(dāng)前位置和 sacn_mack(x) 指定位置之間的水平滾動
selection('from', index)
-- 設(shè)置選中范圍的起始位置是 index 參數(shù)指定的值
selection('to', index)
-- 設(shè)置選中范圍的結(jié)束位置是 index 參數(shù)指定的值
selection('range', start, end)
-- 設(shè)置選中范圍是 start 到 end 參數(shù)之間的值
selection_adjust(index)
-- 該方法是為了確保輸入框中選中的范圍包含 index 參數(shù)所指定的字符
-- 如果選中的范圍已經(jīng)包含了該字符,那么什么事情也不會發(fā)生
-- 如果選中的范圍不包含該字符轴合,那么會從光標(biāo)的位置將選中的范圍擴(kuò)展至該字符
selection_clear()
-- 取消選中狀態(tài)
selection_element(element=None)
-- 該方法用于“設(shè)置”或“獲取”選擇范圍
-- 如果給 element 參數(shù)賦值创坞,那么表示設(shè)置選擇范圍
-- 否則表示獲得當(dāng)前的選擇范圍