Python 如何使用pyqtgraph和pypubsub在deque获得值时绘制它?

Python 如何使用pyqtgraph和pypubsub在deque获得值时绘制它?,python,publish-subscribe,pyqtgraph,pypubsub,Python,Publish Subscribe,Pyqtgraph,Pypubsub,我正在尝试制作一个程序,其中一个实例向另一个实例发送值,并连续绘制它们。我使用pypubsub编程将值从一个实例发送到另一个实例。另一个实例获取值并将其存储到deque中,并且每当deque更新时,它都会打印该deque 我认为实例之间的通信很好,我可以看到deque按照我的计划每秒钟更新一次,但是,问题是,无论何时更新,图形都不会显示deque的值,而是在整个更新完成后显示值。我想知道我如何在deque更新时绘制它 from pyqtgraph.Qt import QtGui, QtCore

我正在尝试制作一个程序,其中一个实例向另一个实例发送值,并连续绘制它们。我使用pypubsub编程将值从一个实例发送到另一个实例。另一个实例获取值并将其存储到deque中,并且每当deque更新时,它都会打印该deque

我认为实例之间的通信很好,我可以看到deque按照我的计划每秒钟更新一次,但是,问题是,无论何时更新,图形都不会显示deque的值,而是在整个更新完成后显示值。我想知道我如何在deque更新时绘制它

from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg

from collections import deque
from pubsub import pub
import time 


class Plotter:
    def __init__(self):

        self.deq = deque()

        self.pw = pg.GraphicsView()
        self.pw.show()
        self.mainLayout = pg.GraphicsLayout()
        self.pw.setCentralItem(self.mainLayout)
        self.p1 = pg.PlotItem()       
        self.p1.setClipToView=True
        self.curve_1 = self.p1.plot(pen=None, symbol='o', symbolPen=None, symbolSize=10, symbolBrush=(102, 000, 000, 255))
        self.mainLayout.addItem(self.p1, row = 0, col=0, rowspan=2)                         

    def plot(self, msg):
        print('Plotter received: ', msg)
        self.deq.append(msg)
        print(self.deq)
        self.curve_1.setData(self.deq)


class Sender:
    def __init__(self):
        self.list01 = [1,2,3,4,5]            # A list of values that will be sent through pub.sendMessage

    def send(self):
        for i in range(len(self.list01)):
            pub.sendMessage('update', msg = self.list01[i] )        
            time.sleep(1)


plotterObj = Plotter()    
senderObj = Sender()

pub.subscribe(plotterObj.plot, 'update')

senderObj.send()

看看sendmessage和subscribe,一切看起来都不错。但我注意到您没有QApplication实例和事件循环。创建应用程序,并在最后调用exec(),使其进入事件循环。然后将进行渲染

app = QtGui.QApplication([])

plotterObj = Plotter()
senderObj = Sender()

pub.subscribe(plotterObj.plot, 'update')

senderObj.send()

app.exec()

请简化你的问题和例子——剔除所有有用的东西。当基础数据更改时,您正在尝试更新图形。关注你的问题是什么。写一个简短的脚本,用一些虚假的数据来封装你的问题;迭代数据并更新图形@二战我很抱歉!因为英语不是我的母语,所以听起来可能语无伦次。当这个问题与图形相关时,要解释它并不容易。您使用的是github/schollii/pypubsub中的pubsub吗?