向 PyQt6 中添加 pyqtgraph。

4
我正在使用Pyqt6制作GUI并想在其中添加图表和其他数据。当我尝试添加图表时,会出现以下错误:
addWidget(self, QWidget): argument 1 has unexpected type 'PlotWidget' addWidget(self, QWidget, int, int, alignment: Qt.AlignmentFlag = Qt.Alignment()): argument 1 has unexpected type 'PlotWidget' addWidget(self, QWidget, int, int, int, int, alignment: Qt.AlignmentFlag = Qt.Alignment()): argument 1 has unexpected type 'PlotWidget'
这是我的代码:
    self.plt=pyqtgraph.PlotWidget()
    self.plt.plot([1,2,3,4,5],[1,2,3,4,5])
    grid.addWidget(self.plt, 6, 1, 3, 3)
    self.setLayout(grid)  #up I have grid=QGridLayout()

能否提供一个最小工作示例和导入的代码呢?另外,您使用的是哪个版本的pyqtgraph?您可以尝试通过python3 -m pip install pyqtgraph --upgrade将其升级到最新版本。 - Domarm
@Domarm 我升级了,但是没有看到任何不同之处,仍然遇到相同的错误。 - Ahmed
@Ahmed,请添加一个包含导入的有效 [mre]。 - musicamante
1个回答

1
我曾尝试一段时间来重现您的问题。
在我将PyQt5和PyQt6一起安装到同一环境后,我成功了。
正如@musicamante所指出的那样,首先导入PyQt6, 之后才是pyqtgraph。 否则,QT_LIB不会正确设置,只能从环境中已安装的软件包猜测PyQt版本。

这可能是由于pyqtgraph“猜测”后端的方式,可以通过正确的导入语句进行限制(我们向OP提出了这个问题,但从未得到答复)。您导入这些库的顺序是什么? - musicamante
是的,我相信是这样的。他不需要导入PyQt5,只需在环境中安装即可。因此,即使是有效的最小示例在这种情况下也无法帮助。 - Domarm
拥有两个版本通常不会成为问题,而且首先导入PyQt应该可以解决问题,因为pyqtgraph通常能够自动检测已经导入的Qt绑定。否则,必须将其报告给项目作为可能的错误。 - musicamante
你说得完全正确。我查了一下,发现 QT_LIB 常量可以检测 PyQt 版本。如果要安装 PyQt5 和 6,它会返回 PyQt5 - Domarm
在导入pyqtgraph之前导入PyQt6可以解决这个问题吗? - musicamante
是的,就像您说的那样。在导入pyqtgraph之前必须先导入PyQt。如果QT_LIB设置正确,那就没问题了。即使我也曾经犯过错误,在导入PyQt之前导入了pyqtgraph。至少我能够重现@Ahmed的问题 :) - Domarm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接