Python中GUI设计之tkinter控件的使用(Scale尺度条和Spinbox控件)
1. 尺度条:一种图形接口输入功能,可以移动尺度条产生某一范围的数字。格式:Scale(父对象,options,…)options主要包括:digits: 尺度数值,读取时需要使用IntVar,DoubleVar或者StringVar变量类型读取。from_:尺度条范围的初始值。label:默认没有标签文字。如果尺度条水平,则标签出现在左上角。如果垂直则出现在右上角。orient:可以设置HORI
·
1. 尺度条:
一种图形接口输入功能,可以移动尺度条产生某一范围的数字。
格式:Scale(父对象,options,…)
options主要包括:
- digits: 尺度数值,读取时需要使用IntVar,DoubleVar或者StringVar变量类型读取。
- from_:尺度条范围的初始值。
- label:默认没有标签文字。如果尺度条水平,则标签出现在左上角。如果垂直则出现在右上角。
- orient:可以设置HORIZONTAL或者VERTICAL。
- repeatdelay:设置需要按住尺度条多久才能拖动尺度条。单位是ms。默认是300ms。
- resolution:每次更改的数值。from_=2.0,to=4.0。如果将resolution设置为0.5,则尺度条为:2.0、2.5、3.0、3.5、4.0。
- showvalue:正常会显示当前的值,如果为0则不显示。
- state:DISABLE为禁用。
- tickinterval:尺度条的标记刻度。from_=2.0,to=3.0,tickinterval=0.25,则刻度条为:2.0、2.25、2.5、2.75、3.0。
- to:尺度条范围值的末端值。
- troughcolor:槽的颜色。
- variable:设置或取得当前选取的尺度值,类型通常为IntVar或者StringVar类型。
- length:设置长度方向的像素值。默认100px
示例1:打印刻度值
from tkinter import*
def printInfo():
print("垂直尺度=%d,水平尺度=%d" % (sV.get(),sH.get()))
root=Tk()
root.title("Scale")
# 创建Scale控件,并指定0-10的跨度,长度100个像素
sV=Scale(root,label="垂直",from_=0,to=10,length=100)
sV.set(5) # 初始尺度为5
sV.pack()
sH=Scale(root,label="水平",from_=0,to=10,length=300,orient=HORIZONTAL)
sH.set(3)
sH.pack()
Button(root,text="Print",command=printInfo).pack()
root.mainloop()
运行:
示例二:使用尺度条调节RGB三通道,改变背景色
from tkinter import *
# 颜色更新方法,绑定Scale的command事件
def bgUpdate(source):
red=rScale.get() #获取刻度值
green=gScale.get()
blue=bScale.get()
# print("R=%d,G=%d,B=%d" % (red,green,blue))
# 将颜色转换为16进制字符串
myColor="#%02x%02x%02x" % (red,green,blue)
# 通过config方法改变root的背景色
root.config(bg=myColor)
root=Tk()
root.title("Cahange bg")
root.geometry("640x480")
# 创建Scale控件,并指定标签Red,刻度0-255,槽颜色红,长度像素300个,刻度间隔30,绑定bgUpdate方法
rScale=Scale(root,label='Red',from_=0,to=255,troughcolor="red",length=300,tickinterval=30,command=bgUpdate)
gScale=Scale(root,label='Green',from_=0,to=255,troughcolor="green",length=300,tickinterval=30,command=bgUpdate)
bScale=Scale(root,label='Blue',from_=0,to=255,troughcolor="blue",length=300,tickinterval=30,command=bgUpdate)
rScale.set(1)
# 使用grid方法分布,依次为第0列,第1列,第2列,行不变
rScale.grid(row=0,column=0)
gScale.grid(row=0,column=1)
bScale.grid(row=0,column=2)
root.mainloop()
运行:
2. Spinbox控件:
这个控件也是一种输入控件,类似于Entry,但是不同的是此控件允许用户通过向上或者向下的箭头调整数值增加或者减少。
格式:Spinbox(父对象,options…)
options的主要参数:
- format:格式化的字符串。
- from_:范围值的初始值。
- increment:每单击一次增减按钮的时候增加跨度。
- textvariable:可以设置以变量方式显示。
- values:可以是元组或者其他序列值。
- to:范围值的末端值。
- xscrollcommand:在x轴使用滚动条。
示例一:选择增减键,打印当前值
from tkinter import *
# 打印sp控件的值
def printInfo():
print(sp.get())
root=Tk()
root.title("SpinBox")
sp=Spinbox(root,from_=0,to=10,command=printInfo)
sp.pack(pady=10,padx=10)
root.mainloop()
运行:
示例二:填充元组到Spinbox的values参数
from tkinter import *
def printInfo():
print(sp.get())
root=Tk()
root.title("Spinbox 2")
sp=Spinbox(root,
values=(10,20,30,50,60,87,99), # 填充元组到values参数
command=printInfo)
sp.pack(pady=10,padx=10)
root.mainloop()
运行:依次遍历显示元组中的内容
示例三:填充非数值数据–字符串
from tkinter import *
def printInfo():
print(sp.get())
root=Tk()
root.title("Spinbox 2")
cities=("中国","美国","韩国","日本","英国","德国","澳大利亚")
sp=Spinbox(root,
values=cities,
command=printInfo)
sp.pack(pady=10,padx=10)
root.mainloop()
运行:
先写到这里,拜了个拜。。。
更多推荐
已为社区贡献5条内容
所有评论(0)