pyqt6:用pyqtgraph定时更新波形图(三)

实现效果:每隔n秒钟,更新N个点的波形图。

思路:利用QTimer定时器的信号槽机制。QTimer会开辟一个新的线程,当 [超时信号] 发生时,会触发更新波形图的槽函数,以此定时更新波形图,同时不会造成界面卡顿。

import sys

import numpy as np
import pyqtgraph as pg
from test import Ui_Form

import warnings
warnings.filterwarnings('ignore')

from PyQt6.QtWidgets import *
from PyQt6.QtCore import *

class MyApp(QWidget, Ui_Form):

    timer = None
    def __init__(self):
        super(MyApp, self).__init__()
        self.setupUi(self)

        # 设置背景色为灰色
        pg.setConfigOption('background', '#f0f0f0')

        # 设置前景色为黑色(坐标轴会变黑)
        pg.setConfigOption('foreground', 'black')

        # 设置曲线颜色和点样式
        self.pic = pg.PlotWidget()  # 这里有点小不同,没有直接画,而是通过调用方法画
        self.curve = self.pic.plot(pen='r', symbol='o')  # 返回一条曲线

        # 设置坐标上下限
        self.pic.setXRange(0, 100)
        # self.pic.setYRange(0, 10)

        # 设置标题
        self.pic.setTitle('波形图')

        self.layout = QGridLayout(self.widget)
        self.layout.addWidget(self.pic)

        self.set_timer()

    def set_timer(self):
        self.timer = QTimer(self)  # QTimer相当于是开辟了一个新的线程 & 必须要有self
        self.timer.timeout.connect(self.draw)  # 利用信号机制,当[超时信号]发出时,触发画图按钮
        self.timer.start(2000)  # 这里是毫秒,2s触发一次

    def draw(self):
        y = np.random.randn(100)
        self.curve.setData(y)  # 曲线设置数据



if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyApp()
    w.show()
    sys.exit(app.exec())

效果

此外,也可以用自定义信号和QThread线程结合的方法,来满足不定时更新波形图的需要。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

learninger_lt7

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值