文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

tkinter -- Spinbox

2023-01-30 22:03

关注

与Entry 类似,但可以指定输入范围值

创建一个Spinbox

代码:

import tkinter as tk
root = tk.Tk()
# root.geometry('200x100')
tk.Spinbox(root).pack()
root.mainloop()

结果:

blob.png

只是创建了一个 Spinbox,其它的什么也做不了,与 Scale 不同,Scale 使用缺省值就可以控制 值的改变



设置 Spinbox 的最大、最小值和步距值

代码:

import tkinter as tk
root = tk.Tk()
tk.Spinbox(root,
           from_=0,  # 设置最小值
           to=100,   # 设置最大值
           increment=5,  # 设置增量值为5,这个与 Scale 的 resolution 意思相同
           ).pack()
root.mainloop()

结果:

blob.png



设置 Spinbox 的值,设置属性 values,设置此值后,每次更新值将使用 values 指定的值

代码:

import tkinter as tk
root = tk.Tk()
sp = tk.Spinbox(root,
           values=(0, 2, 20, 40, -1),
           increment=2,  # 设置增量值为2,这个与 Scale 的 resolution 意思相同
           )
sp.pack()
# 打印当前的spinbox的值,一个元组(tuple)类型
print(sp['values'])
root.mainloop()

结果:

blob.png

显示的第一个值为0,up 按钮则为2,20,40,-1,不再是增2操作,它会使用 tuple 的索引递增,至到 tuple 的最后一个项时,将不再增加,至到 tuple 的最后一个项时,将不再增加

down 按钮与 up 按钮恰好相反,它使用 tuple 的索引递减



Spinbox 绑定变量

代码:

import tkinter as tk
root = tk.Tk()
v = tk.StringVar()
sp = tk.Spinbox(root,
           values=(0, 2, 20, 40, -1),
           increment=1,  # 设置增量值为1,这个与 Scale 的 resolution 意思相同
           textvariable=v,
           )

# 设置初始值为20
v.set(20)
print(v.get())
sp.pack()
# 打印当前的spinbox的值,一个元组(tuple)类型
print(sp['values'])
root.mainloop()

结果:

blob.png

上面的代码将变量 v 与 sb 绑定,并将 Spinbox 的初始值设置为20,运行程序,Spinbox 的值显示为20,再点击 up 按钮,此时值变为40




再看下面的代码,与这个不同的是设置的值不包含在 tuple 之内

代码:

import tkinter as tk
root = tk.Tk()
v = tk.StringVar()
sp = tk.Spinbox(root,
           values=(0, 2, 20, 40, -1),
           increment=1,  # 设置增量值为1,这个与 Scale 的 resolution 意思相同
           textvariable=v,
           )

# 设置初始值为200
v.set(200)
print(v.get())
sp.pack()
# 打印当前的spinbox的值,一个元组(tuple)类型
print(sp['values'])
root.mainloop()

效果:

blob.png

运行程序,显示的值为200,再次点击 up 按钮,显示的值为0,即虽然 Spinbox 能将值显示出来,但并不会将200添加到变量中,此时的索引值依旧为0,因为没有找到200的项。当点击 up 时,索引值变为1,即显示的值为2



设置 Spinbox 的回调函数

代码:

import tkinter as tk
root = tk.Tk()
def printspin():
    print('Spinbox')

sp = tk.Spinbox(root,
           from_=0,  # 最小值
           to=10,  # 最大值
           increment=1,  # 设置增量值为1,这个与 Scale 的 resolution 意思相同
           command=printspin,  # 回调函数
           )

sp.pack()
root.mainloop()

结果:

blob.png

每次点击 Spinbox 按钮时就会调用 printSpin 函数,打印出'Spinbox'。与 Scale 不同的是:它不需要参数




打印 Spinbox 的当前内容,是显示的值,不是 values 的值

代码:

import tkinter as tk
root = tk.Tk()
def printspin():
    # 使用get()方法来得到当前的显示值
    print(sp.get())

sp = tk.Spinbox(root,
           from_=0,  # 最小值
           to=10,  # 最大值
           increment=1,  # 设置增量值为1,这个与 Scale 的 resolution 意思相同
           command=printspin,  # 回调函数
           )

sp.pack()
root.mainloop()

结果

blob.png

每次点击 Spinbox 按钮时就会调用 printSpin 函数,打印出 Spinbox 的当前值



删除 Spinbox 指定位置的字符

代码:

import tkinter as tk
root = tk.Tk()
def printspin():
    sp.delete(0)
    print(sp.get())

sp = tk.Spinbox(root,
           values=(123456789,23456789,3456789,456789,56789,6789,789,89,9),
           increment=0,  # 设置增量值为0,这个与 Scale 的 resolution 意思相同
           command=printspin,  # 回调函数
           )

sp.pack()
root.mainloop()

效果:

444.gif




在 Spinbox 指定位置插入文本

代码:

import tkinter as tk
root = tk.Tk()
def printspin():
    sp.insert(tk.END, '.00')
    print(sp.get())

sp = tk.Spinbox(root,
           from_=1234,   # 最小值
           to=9999,  # 最大值
           increment=1,  # 设置增量值为1,这个与 Scale 的 resolution 意思相同
           command=printspin,  # 回调函数
           )

sp.pack()
root.mainloop()

效果:

444.gif

每次点击 Spinbox 按钮时就会调用 printSpin 函数,当前的显示值均添加了两个有数字".00"

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯