前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tkinter -- Spinbox

tkinter -- Spinbox

作者头像
py3study
发布2018-08-03 10:40:52
7570
发布2018-08-03 10:40:52
举报
文章被收录于专栏:python3python3python3

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

创建一个Spinbox

代码:

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

结果:

blob.png
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
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
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
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
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
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
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
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
444.gif

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档