python-tkinter-GUI简单化编程之表盘数据显示控件
python tkinter GUI简单化编程之文章目录(点击可传送)
一、自我介绍、封装及使用方法
本系列文章将先以封装python的tkinter库为目标进行讲解,后续将会再封装其他python的GUI库。具体可从第一章开始浏览,后续不再阐述。
二、表盘数据显示控件
现在,我们在PythonGui.pyw
再添加以下代码封装表盘数据显示控件
。接下来将会讲解使用方法,注意不要删除以前的代码。该控件可以更形象的表达数据的变化。目前该控件的类型只有一个,未来将制作更多的类型,并以现有文章的格式发布。接下来将会讲解使用方法,注意不要删除以前的代码。
def SS_1创建表盘数据显示控件(放置属性,表盘属性,数据属性):
'''
放置属性为一个列表,分别代表 0.放置的窗口 1.放置于窗口的行 2.放置于窗口的列
表盘属性为一个列表,分别代表 0.表盘的背景颜色 1.数据不占位时的背景颜色 2.数据占位时的背景颜色 3.表盘宽度
数据属性为一个列表,分别代表 0.当前数据 1.数据最小值 2.数据最大值 3.更新速度
'''
放置窗体 = 放置属性[0]
放置位置 = 放置属性[1:]
背景颜色 = 表盘属性[0]
数据空背景颜色 = 表盘属性[1]
数据占背景颜色 = 表盘属性[2]
画布宽度 = 表盘属性[3]
当前数据 = 数据属性[0]
数据最小值 = 数据属性[1]
数据最大值 = 数据属性[2]
更新速度 = 数据属性[3]
if 数据最大值<数据最小值:
messagebox.showerror('函数错误','表盘数据显示控件函数参数填写的数据最大值小于数据最小值,请检查!')
return
try:
当前数据.get()
except:
messagebox.showerror('函数错误','当前数据的类型定义请使用本封装库的类型,请检查!')
return
if 更新速度<=100:
更新速度 = 100
if 画布宽度%2 != 0:
画布宽度 = 画布宽度 + 2
else:
画布宽度 = 画布宽度 + 1
画布高度 = 画布宽度/2
子窗口 = tk.Frame(放置窗体,bg =背景颜色,height = 1,width = 1 )
子窗口.grid(row = 放置位置[0],column = 放置位置[1],padx = 2,pady= 2)
画布 = tk.Canvas(子窗口,width = 画布宽度,height = 画布高度,bg =背景颜色)
画布.pack(fill = tk.BOTH)
中心 = 画布宽度/2
半径大小 = 画布宽度/2*0.96
左上角位置 = (中心-半径大小+1,画布宽度*0.02)
右下角位置 = (中心+半径大小+1,画布宽度)
画布.create_arc(左上角位置[0],左上角位置[1],右下角位置[0],右下角位置[1],start = 0,extent = 180,fill = 数据占背景颜色)
表盘 = ['','']
表盘[0] = 画布.create_arc(左上角位置[0],左上角位置[1],右下角位置[0],右下角位置[1],start = 0,extent = 90,fill = 数据空背景颜色)
画布1 = tk.Canvas(子窗口,width = 画布宽度,height = 24,bg =背景颜色)
画布1.pack()
画布1.create_text(画布宽度/100*5,12,text = str(数据最小值))
画布1.create_text(画布宽度/100*93,12,text = str(数据最大值))
表盘[1] = 画布1.create_text(画布宽度/100*50,12,text = str(当前数据.get()))
def 数据更新():
显示数据 = 当前数据.get()
if 显示数据<数据最小值:
显示数据 = (数据最小值)
if 显示数据>数据最大值:
显示数据 = (数据最大值)
当前数据百分比 = 显示数据/(数据最大值-数据最小值)
角度 = round((1-当前数据百分比)*180,2)
画布.delete(表盘[0])
画布1.delete(表盘[1])
表盘[0] = 画布.create_arc(左上角位置[0],左上角位置[1],右下角位置[0],右下角位置[1],start = 0,extent = 角度,fill = 数据空背景颜色)
表盘[1] = 画布1.create_text(画布宽度/100*50,12,text = str(显示数据))
子窗口.after(更新速度,数据更新)
数据更新()
三、封装库的使用
在test.pyw中添加以下代码准备测试:
主窗体 = GUI.A_建立根页面(['测试软件',600,300,'Beige'],'')
测试数据 = GUI.A_定义变量('int',0)
def 外部函数():
global 测试数据
测试数据.set(测试数据.get()+1)
GUI.T_定时器控件(100,外部函数,True)
GUI.SS_1创建表盘数据显示控件([主窗体,0,0],['lightgray','lightgreen','red',400],[测试数据,0,100,100])
主窗体.mainloop()
SS_1创建表盘数据显示控件
函数中有三个形参:0.放置属性 1.表盘属性 2.数据属性
(1)放置属性为一个列表,分别代表 0.放置的窗口 1.放置于窗口的行 2.放置于窗口的列
(2)表盘属性为一个列表,分别代表 0.表盘的背景颜色 1.数据不占位时的背景颜色 2.数据占位时的背景颜色 3.表盘宽度
(3)数据属性为一个列表,分别代表 0.当前数据 1.数据最小值 2.数据最大值 3.更新速度(单位为ms
)
注意:1.建议表盘宽度不要小于150,不然表盘太小,数据显示不美观 2.为了程序的运行速度,设置的更新速度值小于100ms,更新速度强制设置为100ms
运行程序,可以生成一个表盘数据显示控件
,该控件位于主窗体的第0行第0列,表盘的背景颜色为'lightgray'
,数据不占位时的背景颜色为'lightgreen'
,数据占位时的背景颜色为'red'
,表盘宽度为400
,当前数据为A_定义变量()
函数创建的int
类型的变量,最小值为0
,最大值为100
,更新时间为100ms
。定时器的使用本章节不再介绍,有使用需求可浏览第9章 python tkinter GUI简单化编程之定时器控件进行查看。
四、总结
若有建议之处,麻烦在评论区指出,共同进步,谢谢。ps:平常加班较多,我会抽空余时间更新后面章节。