将 Pyqtgraph 嵌入到 PySide2

Seb*_*bus 4 python pyqtgraph pyside2

我想将 PyQtGraph PlotWidget 实现到 PySide2 应用程序中。使用 PyQt5 一切正常。使用 PySide2 我得到底部显示的错误。我已经发现,有一些工作正在进行中,但似乎也有一些人设法使这项工作正常进行。但是,我还做不到。我使用的是 Pyqtgraph 0.10 而不是开发者分支。我要不要改变?我需要做什么?

from PySide2.QtWidgets import QApplication, QMainWindow, QGraphicsView, QVBoxLayout, QWidget
import sys
import pyqtgraph as pg


class WdgPlot(QWidget):
    def __init__(self, parent=None):
        super(WdgPlot, self).__init__(parent)
        self.layout = QVBoxLayout(self)

        self.pw = pg.PlotWidget(self)
        self.pw.plot([1,2,3,4])
        self.pw.show()
        self.layout.addWidget(self.pw)
        self.setLayout(self.layout)
if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = WdgPlot()
    w.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

错误:

 QtGui.QGraphicsView.__init__(self, parent)
TypeError: arguments did not match any overloaded call:
  QGraphicsView(parent: QWidget = None): argument 1 has unexpected type 'WdgPlot'
  QGraphicsView(QGraphicsScene, parent: QWidget = None): argument 1 has unexpected type 'WdgPlot'
Traceback (most recent call last):
Run Code Online (Sandbox Code Playgroud)

eyl*_*esc 6

在pyqtgraph的稳定分支中,甚至不支持PySide2,因此它导入必须属于PyQt4或PySide的QtGui.QGraphicsView,因为在PyQt5和PySide2中QGraphicsView属于子模块QtWidgets而不是QtGui。

在开发分支中,正在实现 PySide2 支持,因此如果您想使用 PySide2,则必须使用以下命令手动安装它(您必须先卸载已安装的 pyqtgraph):

git clone -b develop git@github.com:pyqtgraph/pyqtgraph.git
sudo python setup.py install
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

from PySide2 import QtWidgets
import pyqtgraph as pg


class WdgPlot(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(WdgPlot, self).__init__(parent)
        layout = QtWidgets.QVBoxLayout(self)

        pw = pg.PlotWidget()
        pw.plot([1,2,3,4])
        layout.addWidget(pw)


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = WdgPlot()
    w.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

更多信息在:

  • 谢谢!可能有趣的是:我使用 `pyenv` 来管理我的 python 环境,而不是“手动”克隆/构建设置,我使用了 [pyqtraph 的 github 页面](https://github.com) 上提出的解决方案/pyqtgraph/pyqtgraph),以便安装在我的环境本地。我使用了以下命令`pip install git+https://github.com/pyqtgraph/pyqtgraph` (2认同)