pyqt如何显示实时数据

本文通过一个PyQT示例展示了如何在GUI中利用matplotlib显示实时数据,并使用定时器进行动态更新。代码中创建了一个后台线程模拟数据生成,然后在主线程中更新图表。在关闭程序时可能出现应用程序错误,可能由于绘图操作未停止,解决方法是确保在退出前停止更新。此外,还介绍了Python的pySerial模块用于读取串口数据。
摘要由CSDN通过智能技术生成
我有一个处理example.csv的后台程序,现在想把当前读行数实时显示到GUI界面中去。
就是这下面
PyQt的signal-slot机制不就是干这个的吗,你要输入的输入框比如LineEdit对应一个slot,处理的地方发送一个signal,剩下的就由PyQt自己做绑定,都不用具体的函数调用,代码看起来清爽多了

下面这个例子,BackendThread模拟后台线程,数据处理完了更新到前台,一秒钟一刷新,换成你自己的逻辑就可以

# -*- coding: utf-8 -*-

from PyQt4.Qt import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import time


class Backend(QThread):
    update_date = pyqtSignal(QString)
    def run(self):
        while True:
            data = QDateTime.currentDateTime()
            self.update_date.emit(QString(str(data)))
            time.sleep(1)


class Window(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        self.resize(400, 100)
        self.input = QLineEdit(self)
        self.input.resize(400, 100)

    def handleDisplay(self, data):
        self.input.setText(data)


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    b = Backend()
    w = Window()
    b.update_date.connect(w.handleDisplay)
    b.start()
    w.show()
    app.exec_()
画动态更新图

通过定时器Timer触发事件,定时更新绘图,可以形成动态更新图片。下面的实例是学习《matplotlib for Pythondevelopers》一文的笔记。

实例如下:

通过self.user = self.user[1:] + [temp],每次删除列表的第一元素,在其尾部添加新的元素。这样完成user数据的动态更新。其他详细的解释见文中的注释部分。

[python]  view plain   copy
  1. #-*-coding:utf-8-*-  
  2. import wx  
  3. from matplotlib.figure import Figure  
  4. import matplotlib.font_manager as font_manager  
  5. import numpy as np  
  6. from matplotlib.backends.backend_wxagg import \  
  7.   FigureCanvasWxAgg as FigureCanvas  
  8. # wxWidgets object ID for the timer  
  9. TIMER_ID = wx.NewId()  
  10. # number of data points  
  11. POINTS = 300  
  12.   
  13. class PlotFigure(wx.Frame):  
  14.     """Matplotlib wxFrame with animation effect"""  
  15.     def __init__(self):  
  16.         wx.Frame.__init__(selfNone, wx.ID_ANY, title="CPU Usage Monitor", size=(600400))  
  17.         # Matplotlib Figure  
  18.         self.fig = Figure((64), 
  • 3
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值