簡體   English   中英

使用 pygtgr 從循環中繪制數據時出現 RuntimeError

[英]RuntimeError while ploting data from loop using pygtgr

我需要使用 pyqtgraph 在循環中生成 plot 數據,但每次我收到以下錯誤:

RuntimeError:已刪除 PlotDataItem 類型的已包裝 C/C++ object

這是生成此錯誤的最小示例。 基本上,當數據進來時,我想創建兩個數字並用新數據更新它們。有人知道我做錯了什么嗎?

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

class test():
    def __init__(self):
        
        self.win = pg.GraphicsWindow()
        self. win.resize(800, 800)
        
        # Create layout to hold multiple subplots
        pg_layout = pg.GraphicsLayoutWidget()
    
        # Add subplots
        plot1 = pg_layout.addPlot(pen=None, symbol='x', row=0, col=0, title="Sim. vs. Ml.")
        plot2 = pg_layout.addPlot(pen=None, symbol='x', row=0, col=1, title="Area")
        
       
        
        self.p1 = plot1.plot()                        # create an empty "plot" (a curve to plot)
        self.p2 = plot2.plot()                        # create an empty "plot" (a curve to plot)
        
        
        
        # Show our layout holding multiple subplots
        pg_layout.show()
        
        
    def update_plot(self,data):
        self.p1.setData(data)
        QtGui.QApplication.processEvents()
        
    def run(self):
        while True:
            x = random.sample(range(1, 100), 20)
            self.update_plot(x)
            

t = test()
t.run()

pg_layoutplot1plot2是局部變量。 因此,一旦 class 初始化完成,它們就會被銷毀,除非它們存儲在其他一些活的 object 中(它們不是)。

順便說一句,在這個例子中, GraphicsWindow已被棄用且無用,QApplication 是 QtWidgets package 中的 class

import random

from PyQt5 import QtGui, QtCore, QtWidgets
import pyqtgraph as pg

class test():
    def __init__(self): 
        # Create layout to hold multiple subplots
       self.pg_layout = pg.GraphicsLayoutWidget()
    
        # Add subplots
       self.plot1 = self.pg_layout.addPlot(pen=None, symbol='x', row=0, col=0, title="Sim. vs. Ml.")
       self.plot2 = self.pg_layout.addPlot(pen=None, symbol='x', row=0, col=1, title="Area")
        
       
        
       self.p1 = self.plot1.plot()                        # create an empty "plot" (a curve to plot)
       self.p2 = self.plot2.plot()                        # create an empty "plot" (a curve to plot)
        
        
        
        # Show our layout holding multiple subplots
       self.pg_layout.show()
        
        
    def update_plot(self,data):
        self.p1.setData(data)
        QtWidgets.QApplication.processEvents()
        
    def run(self):
        while True:
            x = random.sample(range(1, 100), 20)
            self.update_plot(x)
            

t = test()
t.run()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM