相关文章推荐
纯真的脸盆  ·  python中time.sleep用法 - ...·  1 年前    · 
任性的筷子  ·  SQL语句中in和not ...·  1 年前    · 
大力的键盘  ·  [PHP] Laravel-admin ...·  2 年前    · 

Spinbox 组件,微调框,它常常用于 从固定范围的选项中选取一个

也就是说作者可以通过 Spinbox 限制用户输入内容的范围。
在这里插入图片描述

有点像 Entry 组件和 Listbox 组件的混合体,Spinbox既可以手动输入内容,也可以在指定范围内进行选择。

但是它本质上含有Entry的成分更多,Spinbox本身就是Entry组件的变体。
在这里插入图片描述

二、运用实例

1. Spinbox基操

我们可以利用from_、to_参数设置可取数字的范围,也可以使用values参数设置可输入值的元组。

下面来简单了解一下 Spinbox 的使用。

import tkinter as tk 
root = tk.Tk()
def Spiprint():
	print(s3.get())
# 设置可选数字范围0-9
tk.Label(root, text='请选择一个你的幸运数字:').pack(padx=10,anchor='w')
s1 = tk.Spinbox(root, from_=0, to_=9)
s1.pack(padx=10, pady=10)
# 设置可选数字范围0-9,且可循环
tk.Label(root, text='请选择一个你的幸运数字:').pack(padx=10,anchor='w')
s2 = tk.Spinbox(root, from_=0, to_=9, wrap=True)
s2.pack(padx=10, pady=10)
# 设置可输入值的元组,并设置回调函数
tk.Label(root, text='你最喜欢吃什么肉:').pack(padx=10,anchor='w')
s3 = tk.Spinbox(root, values= ('鸡肉','鸭肉','鱼肉','牛肉','羊肉'), command=Spiprint)
s3.pack(padx=10, pady=10)
root.mainloop()

让我们运行程序,分别演示一下
在这里插入图片描述

瞪大眼睛仔细观察

  1. 第一个Spinbox,我们不断按动向上调节箭头,当数字达到最高值 9 的时候,不管我们怎么疯狂点击,输入框中的文字都不会改变。
  2. 第二个Spinbox,我们同样也是不断按动向上调节箭头,当数字达到最高值 9 的时候,再次点击,就会重新回到最低值的 0,这是因为我们设置了wrap参数为True(默认情况下为False),使得整个限制范围可循环。
  3. 第三个Spinbox,我们每次点击调节箭头,就会在屏幕中打印相应的值,这也是我们设置了回调函数的缘故。

在这里需要注意的是,如果我们在输入框中手动输入值,是不会调用回调函数的,回调函数只有在点击上下调节按钮的情况下才会被触发

2. Spinbox有木有用?

我在学习Spinbox的时候,一直在想一个问题,它究竟可以用在哪里?

虽然Spinbox可以设置一个可取值的范围,但是用户还是可以直接在输入框中输入范围以外的值。

你看,说好的0-9范围呢?我直接在输入框中输入了 11111,也没有任何不允许的提示。
在这里插入图片描述
如果要打开 validate 开启验证功能,那跟 Entry 组件本身有啥区别,大不了我再加个Label提示用户可输入的范围就好…
在这里插入图片描述
如果方便用户直接选择,不用手动输入,那还不如用 Listbox 组件,可以直接选择;而 Spinbox 还需要不断点击调节箭头直到选到所需的那个值。

是不是太鸡肋了…

在这里插入图片描述
当然,更有可能是我才疏学浅、见识浅薄,根本不知道Spinbox的妙用。

如果哪位大佬知道,请一定教教我!

三、参数方法

1. 参数汇总

还是总结一下Spinbox组件中常用的参数以及用法。
在这里插入图片描述
——

2. 方法汇总

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)

  • 设置选中范围是 start 到 end 参数之间的值

selection_adjust(index)

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

selection_clear()

  • 取消选中状态

selection_element(element=None)

  • 该方法用于“设置”或“获取”选择范围
  • 如果给 element 参数赋值,那么表示设置选择范围
  • 否则表示获得当前的选择范围
Python tkinter教程-02:Label 文章目录0 准备工作1 介绍2 基本用法3 放文字4 字体5 颜色6 宽度与高度7 插入图片8 拓展:tkVar绑定(textvariable)其它 0 准备工作 要使用,先导入:import tkinter as tk导入名字叫tkinter的库,并将名字改为tk,这样方便使用 注意:尽量不要使用IDLE,不然可能会和tkinter有冲突,因为IDLE是tkinter写的 要创建一个标签,就用tkinter.Label(),但是必须要有至少一个参数,它创建的时候要放在窗口名字.mainloop()这一行的前面,因为要先创建才可以 第13章数值调整控件(SpinboxSpinbox由三部分组成:输入、上箭头和下箭头。Spinbox控件规定用户只能选取特定范围内的数值。通过点击上下箭头来改变数值。 # create fontftTimes = Font(family='Times', size=12, weight=BOLD) # create a label to display message.label_text = Stri... def __init__ (self, master=None, cnf={}, **kw):Frame.__init__( self, bg='lightgray')self.master = masterself.changed = False#self.master.size = (800,1200)#self.master.resizable(False, False)self.maste...     微调提供一种方法,让用户可以从值集中快速选择一个值。默认状态下,微调显示其当前所选的值。 触摸微调可显示下拉菜单,其中列有所有其他可用值,用户可从中选择一个新值。您可以使用 Spinner 对象向您的布局中添加一个微调。通常应在 XML 布局中使用 <Spinner> 元素来执行此操作。 例如:<Spinner     android:id="@+id/plane... Listbox控件 列表控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 Listbox 组件通常被用于显示一组文本选项,Listbox 组件跟 Checkbutton 和Radiobutton 组件类似,不过 Listbox 是以列表的形式来提供选项的(后两个是通过按钮的形式)。 Listbox(master=None, **options) (class) master... 2.4.7 spinBox整数计数器 整数计数器QSpinBox用于接收整数数值输入,QSpinBox允许用户选择一个值通过单击向上/向下按钮或按下键盘上的向上/向下增加/减少当前显示的值。用户也可以手动输入数值。 创建Spinbox QSpinBox *box = new QSpinBox(this); box->setGeometry(QRect(QPoint(10, 50), QSize(200, 50))); 图2-4-11 Spinbox效果图 下面列出Spinbox常用的. Spinbox 组件通常用于在限定数字中选取的情况下代替普通的 Entry 组件。 注意:Spinbox 组件仅支持 Python2.3 和 Tk8.4 以上版本。 Spinbox 组件跟 Entry 组件用法非常相似,主要区别是使用 Spinbox... SpinBox用于整数的显示与输入,一般显示为十进制,也可以显示二进制和十六进制的数,而且可以在显示增加前缀和后缀 QDoubleSpinBox用于浮点数的显示和输入,可以设置显示小数位数,也可以设置显示的前缀和后缀 它们都是QAbstractSpinBox的子类,具有大多数相同的属性,只是参数类型不同。在UI设计器中进行页面设计时,就可以设置这些属性。 QSpinBox和QDoubleS... Tkinter教程之Spinbox篇#与Entry类似,但可以指定输入范围值1.创建一个Spinboxfrom Tkinter import *root = Tk()Spinbox(root).pack()root.mainloop()#只是创建了一个Spinbox,其它的什么也做不了,与Scale不同,Scale使用缺省值就可以控制 值的改变。2.设置Spinb