py 第三十三天 Tkinter14:Spinbox

一、介绍

Spinbox 组件(Tk8.4 新增)是 Entry 组件的变体,用于从一些固定的值中选取一个。

二、使用

Spinbox组件跟 Entry 组件用法非常相似,主要区别是使用Spinbox 组件,你可以通过范围或者元组指定允许用户输入的内容。

from tkinter import *

root = Tk()

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

mainloop()

你还可以通过元组指定允许输入的值:

from tkinter import *

root = Tk()

w = Spinbox(root, values= ("小甲鱼", "~风介~", "wei_Y", "戴宇轩"))
w.pack()

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= ("小甲鱼", "风介", "wei_Y", "戴宇轩") 则允许用户在这 4 个字符串中选择
width 1. 设置输入框的宽度,以字符为单位
2. 默认值是 20
3. 对于变宽字体来说,组件的实际宽度等于字体的平均宽度乘以 width 选项的值
wrap 1. 默认情况下(False),当输入框中的值是第一个(最后一个)的时候,再点击向上(向下)调节箭头,内容不会改变
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)
-- 设置选中范围是 start 到 end 参数之间的值

selection_adjust(index)
-- 该方法是为了确保输入框中选中的范围包含 index 参数所指定的字符
-- 如果选中的范围已经包含了该字符,那么什么事情也不会发生
-- 如果选中的范围不包含该字符,那么会从光标的位置将选中的范围扩展至该字符

selection_clear()
-- 取消选中状态

selection_element(element=None)
-- 该方法用于“设置”或“获取”选择范围
-- 如果给 element 参数赋值,那么表示设置选择范围
-- 否则表示获得当前的选择范围

https://fishc.com.cn/forum.php?mod=viewthread&tid=61187&extra=page%3D1%26filter%3Dtypeid%26typeid%3D604

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352