(十二)python tkinter GUI简单化编程之表盘数据显示控件

在这里插入图片描述


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:平常加班较多,我会抽空余时间更新后面章节。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆熊的世界

原创不复制精细无废料,谢谢赞赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值