python 动态显示数据。

news2024/9/22 4:50:05

界面显示动态的数据。

from time import sleep
import serial


import tkinter as tk



lis=[1,10,40]
# 打开串行端口
ser = serial.Serial('COM3', 9600)  # 9600为波特率,根据实际情况进行调整






# 创建窗口和画布
window = tk.Tk()
canvas = tk.Canvas(window, width=400, height=300)
canvas.pack()

# 假设你的列表长这样,其中每个元素都是一个包含编号和值的元组
data = [
    (1, 10),
    (2, 15),
    (3, 20),
    # ... 其他元素
    (19, 35),
    (20, 40)
]

# 定义绘制接线图的函数
def draw_line_chart(data):
    canvas.delete("all")  # 清空画布
    
    # 计算画布的宽度和高度
    canvas_width = canvas.winfo_width()
    canvas_height = canvas.winfo_height()
    
    # 计算每个点的坐标
    x_scale = canvas_width / len(data)
    y_scale = canvas_height / max([item[1]+10 for item in data])
    points = [(item[0] * x_scale, canvas_height - item[1] * y_scale) for item in data]
    
    # 绘制连接线
    for i in range(len(points) - 1):
        canvas.create_line(points[i], points[i+1])
    
    # 绘制数据点
    for point in points:
        canvas.create_oval(point[0]-2, point[1]-2, point[0]+2, point[1]+2, fill="red")

# 初始绘制
draw_line_chart(data)

# 模拟数据更新
def update_data():
    # 更新数据
    data = [(index, value) for index, value in enumerate(lis, start=1)]  # 更新你的数据
    # 调用绘制函数
    draw_line_chart(data)    
    # 每隔一段时间更新数据
    canvas.after(1000, update_data)
    try:   
        if ser.in_waiting > 0:  # 如果串口有数据可读           
            data = ser.read()  # 读取一行数据并解码为字符串
            ser.reset_input_buffer()
            tmp=(ord(data)+100)/10
            print("\r测到的温度是:", tmp,'°C',end=' ')
            lis.append(tmp)
            while len(lis)>50:
                lis.pop(0)
            print(lis,end=' ')
    except Exception as error:
        print(error)
        ser.close()  # 捕获Ctrl+C中断信号后关闭串口    
        print("程序已停止")
        pass
    
    

# 启动数据更新
canvas.after(1000, update_data)

# 运行窗口主循环
window.mainloop()
ser.close()  # 捕获Ctrl+C中断信号后关闭串口   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1437051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客错题整理——C语言(实时更新)

1.以下程序的运行结果是&#xff08;&#xff09; #include <stdio.h> int main() { int sum, pad,pAd; sum pad 5; pAd sum, pAd, pad; printf("%d\n",pAd); }答案为7 由于赋值运算符的优先级高于逗号表达式&#xff0c;因此pAd sum, pAd, pad;等价于(…

大厂聚合支付系统架构演进(上)

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01; 作者简介&#xff1a;魔都国企技术专家兼架构&#xff0c;多家大厂后端一线研发经验&#xff0c;各大技术社区…

OpenCV与机器学习:使用opencv和sklearn实现线性回归

前言 线性回归是一种统计分析方法&#xff0c;用于确定两种或两种以上变量之间相互依赖的定量关系。在统计学中&#xff0c;线性回归利用线性回归方程&#xff08;最小二乘函数&#xff09;对一个或多个自变量&#xff08;特征值&#xff09;和因变量&#xff08;目标值&#…

osg模型的平移、缩放、旋转

加载2个模型&#xff0c;其中一个向上移动28个单位&#xff1b; 加载2个模型&#xff0c;其中一个缩放0.5倍&#xff0c;向下移动22个单位&#xff1b; 加载2个模型&#xff0c;其中一个缩放0.5倍、旋转45度、向右向下移动几个单位&#xff1b; 都是用矩阵实现的&#xff1b; …

Mac上软件闪退(意外退出)的解决方法

mac苹果电脑上运行软件会意外退出&#xff0c;怎么办&#xff0c;可以试试下面的方法&#xff0c;亲测可行&#xff01; 第一种方法&#xff1a; 1、打开访达&#xff0c;进入应用程序目录&#xff0c;找到闪退的软件图标&#xff0c;在软件图标上右键选择“显示简介”&#…

【计算机网络】【练习题及解答】【新加坡南洋理工大学】【Computer Control Network】【Exercise Solution】

说明&#xff1a; 个人资料&#xff0c;仅供学习使用&#xff0c;版权归校方所有。 一、题目描述 该问题接上期博文【练习题及解答】&#xff0c;描述网络通信中的链路效率&#xff08;Link Efficiency&#xff09;&#xff0c;即Link Utilization的计算。&#xff08;此处认…

golang 引入swagger(iris、gin)

golang 引入swagger&#xff08;iris、gin&#xff09; 在开发过程中&#xff0c;我们不免需要调试我们的接口&#xff0c;但是有些接口测试工具无法根据我们的接口变化而动态变化。文档和代码是分离的。总是出现文档和代码不同步的情况。这个时候就可以在我们项目中引入swagge…

二叉树的锯齿形遍历,力扣

目录 题目&#xff1a; 我们直接看题解吧&#xff1a; 快速理解解题思路小建议&#xff1a; 解题方法&#xff1a; 相似题目对比分析&#xff1a; 解题分析&#xff1a; 解题思路&#xff1a; 补充说明&#xff1a; 思路优化&#xff1a; 代码实现(层序遍历倒序)&#xff1a; 题…

kettle spoon创建带参数定时任务并关闭它

文章目录 ETL是什么下载安装kettle和mysql8资源下载 数据库连接方式已定义的数据库类型进行连接Generic Database方式连接JNDI方式 运行方式使用案例教程定时job执行增量插入转换新建转换新建定时任务job关闭定时任务job 命令行运行定时任务job命令行执行任务后台运行脚本文件设…

使用 openpyxl 操作 Excel

由于单位有任务&#xff0c;需要按照名册制作多个工作表。手动复制和修改内容太费事了&#xff0c;所以使用python完成此项工作&#xff0c;为之后的此类工作提供一个通用脚本。 安装依赖库 pip install openpyxl lxml我们需要用到openpyxl。在官方文档中提到&#xff0c;如果…

【Java安全】ysoserial-URLDNS链分析

前言 Java安全中经常会提到反序列化&#xff0c;一个将Java对象转换为字节序列传输&#xff08;或保存&#xff09;并在接收字节序列后反序列化为Java对象的机制&#xff0c;在传输&#xff08;或保存&#xff09;的过程中&#xff0c;恶意攻击者能够将传输的字节序列替换为恶…

springboot159基于springboot框架开发的景区民宿预约系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

Python学习从0到1 day15 Python函数进阶

什么东西的可塑性最强呢&#xff1f; 是水&#xff0c;水能载舟 exciting ——24.2.6 一、函数的多返回值 当一个函数需要多个返回值&#xff0c;该如何书写代码&#xff1f; 按照返回值的顺序&#xff0c;写对应顺序的多个遍历接收即可 变量之间用逗号隔开 支持不同类型的数据…

初始Ansible自动化运维工具之playbook剧本编写

一、playbook的相关知识 1.1 playbook 的简介 playbook是 一个不同于使用Ansible命令行执行方式的模式&#xff0c;其功能更强大灵活。简单来说&#xff0c;playbook是一个非常简单的配置管理和多主机部署系统&#xff0c;不同于任何已经存在的模式&#xff0c;可作为一个适…

Java中JVM常用参数配置(提供配置示例)

目录 前言一、内存参数配置二、垃圾收集器配置三、GC策略配置3.1、基础通用配置3.2、Parallel 和 Parallel Old 常用参数配置3.3、CMS 常用参数配置3.4、G1 常用参数配置 四、GC日志配置五、dump 日志参数配置5.1、OutOfMemory异常时生成dump文件5.2、发生Full GC时生成dump文件…

C++:编译器对被const修饰变量的处理行为(替换)

C&#xff1a;编译器对被const修饰变量的处理行为&#xff08;替换&#xff09; 前言原因代码验证 前言 最近博主在写笔试时看到了一道有关被const修饰变量相关题&#xff0c;原题如下&#xff1a; 对于初学者来说&#xff0c;虽然a是常量&#xff0c;但可以通过指针p的行为来…

EMNLP 2023精选:Text-to-SQL任务的前沿进展(下篇)——Findings论文解读

导语 本文记录了今年的自然语言处理国际顶级会议EMNLP 2023中接收的所有与Text-to-SQL相关&#xff08;通过搜索标题关键词查找得到&#xff0c;可能不全&#xff09;的论文&#xff0c;共计12篇&#xff0c;包含5篇正会论文和7篇Findings论文&#xff0c;以下是对这些论文的略…

Vue代理模式和Nginx反向代理(Vue代理部署不生效)

在使用axios时&#xff0c;经常会遇到跨域问题。为了解决跨域问题&#xff0c;可以在 vue.config.js 文件中配置代理&#xff1a; const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServer: {port: 7070,prox…

Linux设备树实现方式

设备树是用来管理板级设备的&#xff0c;就是用来描述开发板上CPU,内存&#xff0c;外设等信息的文件。 举个例子&#xff0c;某款芯片很火&#xff0c;很多厂商都选择该芯片来制作自己的开发板&#xff0c;这些开发板上的外设资源数目不一致&#xff0c;有可能用到相同外设但确…

代码随想录第28天|● 93.复原IP地址 ● 78.子集 ● 90.子集II

文章目录 93.复原IP地址思路&#xff1a;切割问题代码&#xff1a; 78.子集思路-找所有节点coding: 90.子集II思路-去重 93.复原IP地址 思路&#xff1a;切割问题 代码&#xff1a; 使用stringBuilder&#xff0c;故优化时间、空间复杂度&#xff0c;因为向字符串插入字符时无…