Tkinter 組件詳解之Spinbox


Spinbox 組件(Tk8.4 新增)是 Entry 組件的變體,用於從一些固定的值中選取一個。

 

何時使用 Spinbox 組件?

Spinbox 組件通常用於在限定數字中選取的情況下代替普通的 Entry 組件。

注意:Spinbox 組件僅支持 Python2.3 和 Tk8.4 以上版本。

 

用法

Spinbox 組件跟 Entry 組件用法非常相似,主要區別是使用 Spinbox 組件,你可以通過范圍或者元組指定允許用戶輸入的內容。

import tkinter as tk

root = tk.Tk()

w = tk.Spinbox(root, from_=0, to=10)
w.pack()

root.mainloop()


你還可以通過元組指定允許輸入的值:
import tkinter as tk

root = tk.Tk()

w = tk.Spinbox(root, values= ("小新", "風間", "正男", "妮妮", "阿呆"))
w.pack()

root.mainloop()


參數

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

master -- 父組件

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

選項 含義
activebackground 設置當 Spinbox 處於 "active" 狀態下的背景顏色


background

1. 設置背景顏色
2. 默認值由系統指定
bg 跟 background 一樣


borderwidth

1. 設置邊框寬度
2. 默認值是 1 或 2 像素


buttonbackground 設置調節箭頭的背景顏色


buttoncursor 指定當鼠標在調節箭頭上方的鼠標樣式


buttondownrelief

1. 指定向下調節箭頭的樣式
2. 默認值是 "raised"
3. 還可以設置為 "flat","sunken","groove" 和 "ridge"


buttonup

1. 指定向上調節箭頭的樣式 
2. 默認值是 "raised"
3. 還可以設置為 "flat","sunken","groove" 和 "ridge"


command

1. 指定一個函數,當用戶點擊調節箭頭的時候將自動調用該函數
2. 注意:當用戶直接在輸入框中輸入數據時並不會觸發該函數


cursor

1. 指定當鼠標在 Spinbox 上飄過的時候的鼠標樣式
2. 默認值由系統指定


disabledbackground 設置當 Spinbox 處於 "disabled" 狀態下的背景顏色


disabledforeground 設置當 Spinbox 處於 "disabled" 狀態下的前景顏色


exportselection

1. 指定選中的文本是否可以被復制到剪貼板
2. 默認值是 True
3. 可以修改為 False 表示不允許復制文本


font

1. 指定 Spinbox 中文本的字體
2. 默認值由系統指定


foreground

1. 設置前景(文本)顏色
2. 默認值由系統指定
fg 跟 foreground 一樣


format

1. 使用該選項設置選擇數值的樣式(from_ 和 to 指定范圍,用戶自行輸入的不算)
2. 例如 format='%10.4f' 表示顯示的數值占 10 位,小數點后保留 4 位


from_

1. 該選項和 to 選項共同指定一個范圍的數值
2. increment 選項設置每次點擊調節箭頭遞增(遞減)的精度


highlightbackground

1. 指定當 Spinbox 沒有獲得焦點的時候高亮邊框的顏色
2. 默認值由系統指定


highlightcolor

1. 指定當 Spinbox 獲得焦點的時候高亮邊框的顏色
2. 默認值由系統指定


highlightthickness 指定高亮邊框的寬度


increment

1. 該選項指定當用戶每次點擊調節箭頭的時候遞增(遞減)的精度
2. 例如 from_=1, to=10, increment=0.5,那么每次用戶點擊調節箭頭的時候,輸入框中的數字遞增(遞減)0.5


insertbackground 指定輸入光標的顏色

insertborderwidth

1. 指定輸入光標的邊框寬度
2. 如果被設置為非 0 值,光標樣式會被設置為 "raised"
3. 小甲魚溫馨提示:將 insertwidth 設置大一點才能看到效果哦


insertofftime

1. 該選項控制光標的閃爍頻率(滅)
2. 單位是毫秒


insertontime

1. 該選項控制光標的閃爍頻率(亮)
2. 單位是毫秒


insertwidth

1. 指定光標的寬度
2. 默認值是 1 或 2 像素


invalidcommand

1. 指定當輸入框輸入的內容“非法”時調用的函數
2. 也就是指定當 validateCommand 選項指定的函數返回 False 時的函數
3. 詳見 Entry 組件最下方  關於驗證詳解
invcmd 跟 invalidcommand 一樣


justify

1. 定義如何對齊輸入框中的文本
2. 使用 "left","right" 或 "center"
3. 默認值是 "left"


readonlybackground 設置當 Spinbox 處於 "readonly" 狀態下的背景顏色


relief
1. 指定邊框樣式
2. 默認值是 "sunken"
3. 還可以設置為 "flat","raised","groove" 和 "ridge"

repeatdelay

1. 該選項指定鼠標左鍵點擊滾動條凹槽的響應時間
2. 默認值是 400(毫秒)


repeatinterval

1. 該選項指定鼠標左鍵緊按滾動條凹槽時的響應間隔
2. 默認值是 100(毫秒)


selectbackground

1. 指定輸入框的文本被選中時的背景顏色
2. 默認值由系統指定


selectborderwidth

1. 指定輸入框的文本被選中時的邊框寬度(選中邊框)
2. 默認值由系統指定


selectforeground

1. 指定輸入框的文本被選中時的字體顏色
2. 默認值由系統指定


state

1. Spinbox 組件可以設置的狀態:"normal","disabled" 或 "readonly"(注意,它跟 "disabled" 相似,但它支持選中和拷貝,只是不能修改,而 "disabled" 是完全禁止)
2. 默認值是 "normal"
3. 注意,如果此選項設置為 "disabled" 或 "readonly",那么調用 insert() 和 delete() 方法都會被忽略


takefocus

1. 指定使用 Tab 鍵可以將焦點移動到輸入框中
2. 默認是開啟的,可以將該選項設置為 False 避免焦點在此輸入框中


textvariable

1. 指定一個與輸入框的內容相關聯的 Tkinter 變量(通常是 StringVar)
2. 當輸入框的內容發生改變時,該變量的值也會相應發生改變


to

1. 該選項和 from_ 選項共同指定一個范圍的數值
2. increment 選項設置每次點擊調節箭頭遞增(遞減)的精度


validate

1. 該選項設置是否啟用內容驗證 
2. 詳見 Entry 組件最下方 關於驗證詳解


validatecommand

1. 該選項指定一個驗證函數,用於驗證輸入框內容是否合法
2. 驗證函數需要返回 True 或 False 表示驗證結果
3. 注意,該選項只有當 validate 的值非 "none" 時才有效
3. 詳見本內容最下方小甲魚關於驗證詳解
vcmd 跟 validatecommand 一樣


values

1. 提供兩個方法限定用戶輸入的內容,一種是通過 from_ 和 to 選項設置范圍,另一種則是將可選值以元組的形式賦值給 values 選項
2. 例如 values= ("小新", "風間", "正男", "妮妮", "阿呆") 則允許用戶在這 5個字符串中選擇


width

1. 設置輸入框的寬度,以字符為單位
2. 默認值是 20
3. 對於變寬字體來說,組件的實際寬度等於字體的平均寬度乘以 width 選項的值


wrap

1. 默認情況下(Flase),當輸入框中的值是第一個(最后一個)的時候,再點擊向上(向下)調節箭頭,內容不會改變
2. 當該選項的值設置為 True,則當達到第一個(最后一個)值的時候,再點擊向上(向下)調節箭頭,內容將回到最后一個(第一個)
3. 小甲魚注:其實就是開啟循環的意^_^


xscrollcommand

1. 與 scrollbar(滾動條)組件相關聯
2. 如果你覺得用戶輸入的內容會超過該組件的輸入框寬度,那么可以考慮設置該選項
3. 使用方法可以參考:Scrollbar 組件


方法

bbox(index)
-- 返回一個 4 元組(x1, y1, x2, y2)用於描述輸入框中 index 參數指定的字符所在的矩形范圍

delete(first, last=None)
-- 刪除參數 first 到 last 范圍內(包含 first 和 last)的所有內容
-- 如果忽略 last 參數,表示刪除 first 參數指定的選項
-- 使用 delete(0, "end") 實現刪除輸入框的所有內容

get()
-- 返回 Spinbox 當前的值

icursor(index)
-- 將光標移動到 index 參數指定的位置
-- 這同時也會設置 "insert" 的值

identify(x, y)
-- 返回給定坐標(x, y)在 Spinbox 中對應的元素名字
-- 返回值可以是:"none"(什么都不是),"buttondown"(向下調節箭頭),"buttonup"(向上調節箭頭)或 "entry"(輸入框)

index(index)
-- 返回與 index 參數相應的選項的序號(例如 e.index("end"))

insert(index, text)
-- 將 text 參數的內容插入到 index 參數指定的位置
-- 使用 insert("insert", text) 將 text 參數指定的字符串插入到光標的位置
-- 使用 insert("end", text) 將 text 參數指定的字符串插入到輸入框的末尾

invoke(element)
-- 調用該方法的效果相當於用戶點擊調節箭頭
-- element 參數的值必須是 "buttonup" 或 "buttondown"

scan_dragto(x)
--  見下方 scan_mark(x)

scan_mark(x)
-- 使用這種方式來實現輸入框內容的滾動
-- 需要將鼠標按下事件綁定到 scan_mark(x) 方法(x 是鼠標當前的水平位置),然后再將 <motion> 事件綁定到 scan_dragto(x) 方法(x 是鼠標當前的水平位置),就可以實現輸入框在當前位置和 sacn_mack(x) 指定位置之間的水平滾動

selection('from', index)
-- 設置選中范圍的起始位置是 index 參數指定的值

selection('to', index)
-- 設置選中范圍的結束位置是 index 參數指定的值

selection('range', start, end)
-- 設置選中范圍是 statr 到 end 參數之間的值

selection_adjust(index)
-- 該方法是為了確保輸入框中選中的范圍包含 index 參數所指定的字符
-- 如果選中的范圍已經包含了該字符,那么什么事情也不會發生
-- 如果選中的范圍不包含該字符,那么會從光標的位置將選中的范圍擴展至該字符

selection_clear()
-- 取消選中狀態

selection_element(element=None)
-- 該方法用於“設置”或“獲取”選擇范圍
-- 如果給 element 參數賦值,那么表示設置選擇范圍
-- 否則表示獲得當前的選擇范圍

 


原文鏈接:https://blog.csdn.net/qq_41556318/article/details/85596217


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM