[英]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_layout
、 plot1
和plot2
是局部變量。 因此,一旦 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.