Spinbox组件是Entry的升级版,可以从指定范围内的值中选一个,可以通过范围或者元组指定这些内容。
'''最基本的用法~!'''
from tkinter import *
root = Tk()
s1 = Spinbox(root,from_ = 0,to = 10)
s1.pack()
s2 = Spinbox(root,values = ('A','B','C','D'))
s2.pack()
mainloop()
#与Entry类似,但可以指定输入范围值
'''1.创建一个Spinbox'''
from Tkinter import *
root = Tk()
Spinbox(root).pack()
root.mainloop()
#只是创建了一个Spinbox,其它的什么也做不了,与Scale不同,Scale使用缺省值就可以控制 值的改变。
'''2.设置Spinbox的最大、最小值和步距值'''
# -*- coding: cp936 -*-
from tkinter import *
root = Tk()
Spinbox(root,
from_ = 0, #设置最小值
to = 100, #设置最大值
increment = 5 #设置增量值为5,这个与Scale的resolution意思相同
).pack()
root.mainloop()
'''3.设置Spinbox的值,设置属性values,设置此值后,每次更新值将使用values指定的值,'''
# -*- coding: cp936 -*-
from tkinter import *
root = Tk()
sb = Spinbox(root,
values = (0,2,20,40,-1),
increment = 2
)
sb.pack()
# 打印当前的Spinbox的值,为一tuple
print(sb['values'])
root.mainloop()
#显示的第一个值为0,up按钮则为2,20,40,-1,不再是增2操作,它会使用tuple的索引递增,至到tuple的最后一个项时,将不再增加;
#down按钮与up按钮恰好相反,它使用tuple的索引递减
'''4.Spinbox绑定变量 '''
# -*- coding: cp936 -*-
from tkinter import *
root = Tk()
v = StringVar()
sb = Spinbox(root,
values = (0,2,20,40,-1),
increment = 2,
textvariable = v
)
v.set(20)
print(v.get())
sb.pack()
# 打印当前的Spinbox的值,为一tuple
root.mainloop()
#上面的代码将变量v与sb绑定,并将Spinbox的初始值设置为20,运行程序,Spinbox的值显示为20,再点击up按钮,此时值变为40,
#即tuple的下一个值,再看下面的代码,与这个不同的是设置的值不包含在tuple之内
# -*- coding: cp936 -*-
from tkinter import *
root = Tk()
v = StringVar()
sb = Spinbox(root,
values = (0,2,20,40,-1),
increment = 2,
textvariable = v
)
v.set(200)
print(v.get())
sb.pack()
# 打印当前的Spinbox的值,为一tuple
root.mainloop()
#运行程序,显示的值为200,再次点击up按钮,显示的值为2,即虽然Spinbox能将值显示出来,但并不会将200添加到变量中,此时的
#索引值依旧为0,因为没有找到200的项。当点击up时,索引值变为1,即显示的值为2。
'''5.设置Spinbox的回调函数'''
# -*- coding: cp936 -*-
from tkinter import *
root = Tk()
def printSpin():
print('Spinbox')
sb = Spinbox(root,
from_ = 0, #最小值
to = 10, #最大值
command = printSpin#回调函数
)
sb.pack()
root.mainloop()
#每次点击Spinbox按钮时就会调用printSpin函数,打印出'Spinbox'。与Scale不同的是:它不需要参数。
'''6.打印Spinbox的当前内容,是显示的值,不是values的值。'''
# -*- coding: cp936 -*-
from tkinter import *
root = Tk()
def printSpin():
# 使用get()方法来得到当前的显示值
print(sb.get())
sb = Spinbox(root,
from_ = 0, #最小值
to = 10, #最大值
command = printSpin#回调函数
)
sb.pack()
root.mainloop()
#每次点击Spinbox按钮时就会调用printSpin函数,打印出Spinbox的当前值。