Tkinter (18) 可微調輸入部件 Spinbox

Jason990420發表於2020-08-14

可微調輸入部件的建立及其選項

部件包含三個主要的部份, 輸入區, 上箭頭, 下箭頭

spin_box = tk.Spinbox(parent, option, ...)
選項 說明
activebackground active 時的背景色
bg or background 背景色
bd or borderwidth 滑塊與槽外框的寛度,內定為 1 點素
buttonbackground 箭頭的背景色, 內定為 gray
buttoncursor 當滑鼠移到箭頭時,所顯示的滑鼠圖示
buttondownrelief 下箭頭外框花樣,內定為 RAISED
buttonup 上箭頭外框花樣,內定為 RAISED
command 箭頭點選時呼叫的程式
cursor 當滑鼠移到部件輸入處時,所顯示的滑鼠圖示
disabledbackground disabled 時,背景顏色
disabledforeground disabled 時,前景顏色
exportselection 文字可否複製到剪貼簿 0/1
font 文字字型
fg or foreground 輸入文字及箭頭的顏色
format format 格式字串, 用來定義 from_ ~ to 的數值在輸入區的文字, 比如 ‘%10.4f’
from_ 以箭頭設定值範圍的起始值
highlightbackground 非聚焦時的聚焦顏色
highlightcolor 聚焦時的聚焦顏色
highlightthickness 聚焦厚度,內定 1, 0 則無
increment 以箭頭設定值範圍的步進值
insertbackground 插入游標的背景顏色,內定為黑色
insertborderwidth 插入游標外框寛度, 內定為 0, 樣式為 RAISED
insertofftime 插入游標消失的時間
insertontime 插入游標顯現的時間
insertwidth 插入游標寛度,內定為 2 圖素
justify 文字在輸入部件中相對的位置,內定為 LEFT, RiGHT/CENTER
readonlybackground readonly 時的背景色
relief 外框花樣,內定為 SUNKEN
repeatdelay 直到經過指定時間 (毫秒), 開始重複按下按鈕, 內定為 400 ms
repeatinterval 重複間隔,以毫秒為單位重複按下按鈕, 內定為 100 ms
selectbackground 被選擇文字的背景顏色
selectborderwidth 被選擇文字的外框寛度
selectforeground 被選擇文字的前景顏色
state NORMAL, DISABLED, ‘readonly’ (仍可以複製內容到剪貼簿, 仍然可以箭頭來改變內容)
takefocus TAB 鍵在部件是否會迴圈焦點 0/1
textvariable 輸入部件中的文字內容,必須使用 StringVar()
to 以箭頭設定值範圍的終止值
values 除了數值的內容外, 也可以使用本選項來提供 tuple 的字串供箭頭選擇
width 部件輸入區的字寛,內定為 20 個標準字寛
wrap 上下箭頭選定內容時到了上下限時, 是否迴圈到另一頭, 內定為 False
xscrollcommand 輸入區水平滾動條 scrollbar.set () 方法

可微調輸入部件的方法

方法 說明
bbox(index) 取得輸入區字串索引 index 所在的字元, 左上角的座標 (x, y), 寛度/高度 w/h, 返回 (x, y, w, h)
delete(first, last=None) 刪除輸入區的子字串, 引數為子字串的索引值
get() 返回輸入區內的字串
icursor(index) 設定輸入游標所在位置, 引數為索引值
identify(x, y) 返回座標位置的零件, 有 ‘entry’, ‘buttonup’, ‘buttondown’, ‘’ (其他)
index(i) 返回相關位置的索引值, 引數有END(行末), INSERT(插入點), ANCHOR, SEL_FIRST(前選擇點), SEL_LAST(後選擇點), “@x”(近x 處)
insert(index, text) 在索引處插入字串
invoke(element) 以 ‘buttonup’ 或 ‘buttondown’ 來呼叫回撥
scan_dragto(x) 滑鼠鍵按下事件處理程式中已標記位置時,滑鼠滾動事件處理程式拖弋捲動部件,x 為位置
scan_mark(x) 滑鼠鍵按下事件處理程式中標記位置 x
selection(‘from’, index) 設定選擇區的起始索引處 index
selection(‘to’, index) 選擇 ANCHOR ~ index (不含) 的文字
selection(‘range’, start, end) 選擇 start ~ end (不含) 的文字
selection_clear() 清除輸入區字串的選擇
selection_get() 返回輸入區選擇的字串

注: 輸入區字串無選擇區時, 引用將為導致 tk.TclError 錯誤.

範例視窗及程式碼

Python

import tkinter as tk

root = tk.Tk()
root.wm_title("Spinbox Demo")

font = ('Courier New', 40, 'bold')

spin_box = tk.Spinbox(root, from_=0, to=10, increment=2, font=font, width=5)
spin_box.grid(row=0, column=0)

root.mainloop()
本作品採用《CC 協議》,轉載必須註明作者和本文連結

Jason Yang

相關文章