当前位置:首页 » tkinter » 正文

Spinbox组件,通过上下箭头按钮达到改变数值 - tkinter中文教程

Spinbox组件跟Scale组件只是表现形态不一样

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.PNG

Spinbox开启循环模式,输出格式化

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()

运行结果:

2.PNG

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()

运行结果:

3.PNG 

Spinbox组件支持不连续的数值及字符串

以上的数据都是很有规律的,如果我们的数据是固定的,却并没有什么规律,可以用参数 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()

运行结果:

4.PNG

Spinbox组件绑定滚动条

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()

运行结果:

6.PNG

 Spinbox组件调整字体大小

上上篇文章用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()

运行结果:

5.PNG

 

本文章作者:湖南·长沙·何云峰,网站:wb98.com 下一篇文章讲列表框组件Listbox


打赏 支付宝打赏 微信打赏

来源:济亨网

本文链接:https://www.wb98.com/post/320.html

    << 上一篇 下一篇 >>

    湘公网安备 43011102000514号 - 湘ICP备08100508号