发布时间:2018-06-04 21:24:16编辑:Run阅读(3842)
与Entry 类似,但可以指定输入范围值
创建一个Spinbox
代码:
import tkinter as tk root = tk.Tk() # root.geometry('200x100') tk.Spinbox(root).pack() root.mainloop()
结果:
只是创建了一个 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()
结果:
设置 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()
结果:
显示的第一个值为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()
结果:
上面的代码将变量 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()
效果:
运行程序,显示的值为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()
结果:
每次点击 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()
结果
每次点击 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()
效果:
在 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()
效果:
每次点击 Spinbox 按钮时就会调用 printSpin 函数,当前的显示值均添加了两个有数字".00"
上一篇: tkinter -- Scale
下一篇: tkinter -- Scrollbar
47745
46235
37110
34627
29229
25886
24745
19863
19417
17908
5716°
6315°
5835°
5888°
6984°
5829°
5846°
6361°
6316°
7673°