五笔打字通主页
Spinbox组件跟Scale组件类似,也是数值输入组件,也可以用from_ 和 to 设定一个输入数值的范围,区别是表现形态不一样,Spinbox是通过点击上下箭头按钮达到改变数值的目的,此外,spinbox还可以在输入框直接输入数据,它很像是单行文本框和按钮的组合体。其实,这个组件还可以自己设置一些数值或一些字符串让用户选择输入。
创建Spinbox 语法是:
Spinbox(父组件,参数…..)
下面是Spinbox组件的相关参数:
activebackground | 组件在活动状态下的背景颜色 |
background 或 bg | 正常状态下的背景颜色 |
bordwidth 或 bd | 边框宽度 |
command | 点击上下按钮调用函数,直接输入不调用 |
cursor | 鼠标光标在组件上的形状 |
disablebackground | 组件禁止状态下的背景颜色 |
disableforeground | 组件禁止状态下的前景颜色 |
foreground 或 fg | 正常状态下的前景颜色 |
font | spinbox组件里的文本字体 |
format | 设置组件供用户选择数值的样式 |
from_ | 范围值的初值 |
increment | 单击上下按钮的增值或减值 |
justify | spinbox输入框的数据的对齐方式,默认居左 |
relief | 组件外观样式 |
state | 组件的状态 |
textvariable | 绑定一个变量,以保存组件选中的值 |
values | 以元组或其它序列值做为用户的选择项 |
to | 范围值的终值 |
width | 组件输入框的长度,默认为20,单位是字符 |
wrap | 默认False,为True即选择的数据可循环使用 |
xscrollcommand | 为组件绑定一个水平摆放的滚动条 |
才学完scale组件,再学spinbox就比较容易了。from_ ,to ,command等参数的用法完全一样。同样可以用 get()获取当前的选项值。
下面的代码我们创建一个从0到100的数据让用户选择,command绑定一个函数输出当前的选项值。
from tkinter import * def changejob(): print(spin1.get()) # 输出选项的当前值 root=Tk() spin1=Spinbox(root,from_=0,to=100,command=changejob) spin1.pack(padx=10,pady=10) root.mainloop()
运行结果:
1. 以上创建的spinbox默认长度是20个字符宽度,下面的代码加参数让它的长度加长:width=30
2. 点击向上按钮,到了100就不能继续,加个参数 wrap=True 就可以开启循环模式,向上到了100,再点击就回到0这个初始位置。同样,到了0这个位置,再点击向下按钮,也可以到100这个终点位置。
3. 上面代码是 spin1.get() 获取选项当前值,其实也可以用 textvariable绑定一个变量var,然后用变量 var.get()获取选项当前值。
from tkinter import * def changejob(): print(var.get()) # 输出选项的当前值 root=Tk() var=IntVar() spin1=Spinbox(root,from_=0,to=100,wrap=True,width=30,textvariable=var,command=changejob) spin1.pack(padx=10,pady=10) root.mainloop()
运行结果:
1. 上面代码点击上下按钮,每次递增和递减都是1,我们加参数来设置每次变化为2.5: increment=2.5
2. 默认的数据显示都是靠左对齐,我们可以改成居中或居右显示:justify=’center’ 或 jistify=’right’
3. scale里面显示的字符串,也可以像以前学python字符串知识一样,可以格式化,我们在参数里用代码 format='%5.2f' 来格式化显示一下,保留2位小数。
from tkinter import * def changejob(): print(spin1.get()) # 输出选项的当前值 root=Tk() spin1=Spinbox(root,from_=0,to=100,wrap=True,increment=2.5, justify='center',format='%5.2f',command=changejob) spin1.pack(padx=10,pady=10) root.mainloop()
运行结果:
以上的数据都是很有规律的,如果我们的数据是固定的,却并没有什么规律,可以用参数 values=元组 来显示这些数据,如 :
values=(3,23,77,19,0,88)
如果我们元组里面的元素是字符串,那么spinbox也是支持的。如:
values=(‘湖南’,’北京’,’吉林’ ,’广东’ ,’上海’)
from tkinter import * def changejob(): print(spin1.get()) # 输出选项的当前值 root=Tk() spin1=Spinbox(root,values=(3,23,77,19,0,88),command=changejob) spin1.pack(padx=10,pady=10) root.mainloop()
以上代码就可以让spinbox 显示没有规律的固定的数值让用户选择.
下面的代码,让组件也可以显示字符串的选项让用户选择:
from tkinter import * def changejob(): print(spin1.get()) # 输出选项的当前值 root=Tk() spin1=Spinbox(root,values=('湖南','北京','吉林' ,'广东' ,'上海'),command=changejob) spin1.pack(padx=10,pady=10) root.mainloop()
运行结果:
spinbox就是单行文本框和按钮的组合体,以前讲过,如何让单行文本框绑定一个水平方向的滚动条,其它spinbox绑定滚动条的方法完全一样。
下一篇文章我就来讲解滚动条,以下先给出spinbox绑定滚动条的代码:
from tkinter import * root=Tk() root.config(bg='lightblue') a=("使人疲惫的不是远方的高山,而是鞋子里的一粒沙子。", "一个男人发现他在变老,是因为他开始像他的父亲。", "一个人毕其一生的努力,就是在整合他自童年时代起就已形成的性格。") spin1=Spinbox(root,values=a,font=('黑体',12),) spin1.pack(padx=10,pady=(10,0),fill=X,ipady=5) scr2=Scrollbar(orient=HORIZONTAL) # 创建水平方向的滚动条 scr2.pack(fill=X,padx=10,pady=(0,10)) spin1.config(xscrollcommand = scr2.set) # spin1滚动设置绑定scr2 scr2.config(command =spin1.xview) # scr2的滚动设置绑定spin1 root.mainloop()
运行结果:
上上篇文章用scale组件调节字体大小,这次我们用spinbox组件来做,command绑定的函数,我们就直接用匿名函数来代替了。
from tkinter import * root=Tk() spin1=Spinbox(root,from_=12,to=80,command=lambda:la1.config(font=('黑体',spin1.get()))) spin1.pack(padx=10,pady=10) la1=Label(root,text='快乐') la1.pack() root.mainloop()
运行结果:
本文章作者:湖南·长沙·何云峰,网站:wb98.com 下一篇文章讲列表框组件Listbox
来源:济亨网
本文链接:http://wb98.com/post/320.html