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 是鼠标当前的水平位置),然后再将 事件绑定到 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 参数赋值,那么表示设置选择范围
-- 否则表示获得当前的选择范围

你可能感兴趣的:(Python扩展阅读,Tkinter详解)