我正在编辑GNURadio中qt
的顶部块。当我生成qt
文件时,在顶部块中我想添加一个pyqtgraph GraphicsWindow
,它由我的Plot.py
块创建并返回。
这是生成的top_block.py
:
class top_block(gr.top_block, Qt.QWidget):
def __init__(self):
gr.top_block.__init__(self, "Top Block")
Qt.QWidget.__init__(self)
self.top_widget = Qt.QWidget()
self.top_scroll.setWidget(self.top_widget)
self.top_layout = Qt.QVBoxLayout(self.top_widget)
self.top_grid_layout = Qt.QGridLayout()
self.top_layout.addLayout(self.top_grid_layout)
在Plot.py
内,我创建了一个pyqtgraphicsWindow
并将图形窗口返回到top_block.py
,如图所示
class Plot(gr.sync_block):
def qtplot(self):
print "inside qtplot"
self.win = pg.GraphicsWindow()
return self.win
我在top_block.py
收到并尝试添加到top_layout
:
self.Plot_0 = gnuradio.input.Plot.Plot(1,1,1)
self._plot_win=self.Plot_0.qtplot()
self.top_layout.addWidget(self._plot_win)
然而它给了我一个RuntimeError:
底层C / C ++对象已被删除,在抛出' Swig :: DirectorMethodException'
的实例后调用终止
我尝试直接在topblock的GraphicsWindow
添加init
,但效果很好。