首页 > 解决方案 > 使用 python tkinter 绘制串行数据

问题描述

我想使用python tkinter构建一个GUI,它通过uart获取时间函数的串行数据并绘制它们;数据在 Y 轴上更新几次然后停止,而画布仍然是空的,没有图表,我做错了什么?

import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib import style
plt.matplotlib.use("TkAgg")
from matplotlib.figure import Figure 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from tkinter import ttk
import matplotlib.animation as animation
import numpy as np
import serial
import datetime



f=Figure(figsize=(5,5),dpi=150)
a=f.add_subplot(111)
def chart():
   
    data= np.array([])
    ser = serial.Serial()
    ser.baudrate = 115200
    ser.port = 'COM6'
    ser.open()
    x=ser.readline()
    c=float(x[0:len(x)-2].decode("utf-8"))
    data=np.append(data,c)
    a.plot(float(data))
    



root= tk.Tk()
root.title("Real Time Plot")
root.configure(background='white')
root.geometry("1000x500")


canvas= FigureCanvasTkAgg(f)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.LEFT,fill=tk.BOTH)
toolbar=NavigationToolbar2Tk(canvas,root)
toolbar.update()
canvas._tkcanvas.pack(side=tk.LEFT,fill=tk.BOTH)

ani=animation.FuncAnimation(f,chart,interval=1000)
root.mainloop()

标签: pythonmatplotlibtkintercanvaspyserial

解决方案


推荐阅读