我正在使用pyqtgraph将可视化嵌入到我的应用程序中,特别是在侧面有一个PlotCurveItem的ScatterPlotItem,我计划在其中连接sigMouseMoved和sigClicked以启用嵌入式交互。为了方便起见,我创建了一个类scatter_plot_histogram。当我运行代码以测试可视化效果时:
app = QtGui.QApplication([])
mw = QtGui.QMainWindow()
mw.resize(900,600)
view = pg.GraphicsLayoutWidget() ## GraphicsView with GraphicsLayout inserted by default
mw.setCentralWidget(view)
mw.show()
## create 2 areas to add plots
w1 = view.addPlot()
w2 = view.addPlot()
test = scatter_plot_histogram(w1, w2, ['a1', 'a2'], [1, 2])
app.exec_() # Start QApplication event loop ***
这很好。但是,在较大的QApplication中,用户定义的(鼠标单击和鼠标悬停)嵌入式交互不起作用,而默认的嵌入式交互(平移和缩放功能)则起作用。我像这样添加小部件:
# Defined and placed here
self.view_widget = pg.GraphicsLayoutWidget()
self.analysis_grid.addWidget(self.view_widget, 1, 0, 2, 3)
...
# Fit to data here
w1 = self.view_widget.addPlot()
w2 = self.view_widget.addPlot()
scatter_plot_histogram(w1, w2, individual_items, item_frequency)
这将显示小部件,但我想,但是我无法像在独立设置中那样访问交互。我尝试过将视图小部件设置为中央小部件,但是仍然无法使用交互功能。我也尝试过制作w1和w2类变量(self.w1,self.w2),但是产生了相同的结果。打印语句表明,在较大的应用程序中根本不会调用这些方法。
关于如何进行这项工作的任何想法?
我已经解决了这个问题。通过制作w1和w2类变量以及散点图本身,我可以使嵌入式交互起作用。