【发布时间】:2021-07-02 19:23:45
【问题描述】:
我定义了一个函数来使用 pyqtgraph 对数据进行切片。关闭主窗口并再次运行该函数时,我遇到了 RuntimeError:wrapped C/C++ object of type ViewBox has been deleted。我的功能如下:
import numpy as np
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
def dp_select(dp):
app = pg.mkQApp("NBED selection")
## Create window with two ImageView widgets
win = QtGui.QMainWindow()
win.resize(800, 300)
# win.setWindowTitle('pyqtgraph example: DataSlicing')
cw = QtGui.QWidget()
win.setCentralWidget(cw)
l = QtGui.QGridLayout()
cw.setLayout(l)
imv1 = pg.ImageView()
imv2 = pg.ImageView()
l.addWidget(imv1, 0, 0)
l.addWidget(imv2, 0, 1)
win.show()
roi = pg.RectROI(pos=[5, 5], size=[10, 10], pen='r')
# roi = pg.LineSegmentROI([[10, 64], [120,64]], pen='r')
imv1.addItem(roi)
def update():
nonlocal dp, imv1, imv2
d2 = roi.getArrayRegion(dp, imv1.imageItem, axis=(0, 1))
imv2.setImage(d2)
roi.sigRegionChanged.connect(update)
## Display the data
imv1.setImage(dp)
pg.mkQApp().exec_()
app.closeAllWindows()
y0, x0 = [int(i) for i in roi.pos()]
dy, dx = [int(i) for i in roi.size()]
y1 = y0 + dy
x1 = x0 + dx
return dp[y0:y1, x0:x1]
我在 Jupyter 实验室中运行以下命令:
data = np.random.rand(50, 50)
dp = dp_select(data)
谁能告诉我如何解决这个问题?
【问题讨论】:
标签: python pyqt garbage-collection pyqt5 pyqtgraph