我开始用比例尺了。我试着运行下面的示例代码,但是它给出了一个错误。这个示例代码来自文档中的此页。我所做的唯一改变是从PySide导入PySide,而不是从PyQt4导入,这些注释明确地说,PyQt4应该可以工作。
问题如何修复此错误?我是不是用错了什么东西?这是PySide中的一个bug吗?
注意:我知道我可以使用PyQt4而不是PySide,但这对我来说不是一个有效的解决办法,原因有几个(包括许可和加入PySide潮流的愿望)。
我知道的关于错误的
PySide.QtCore.qVersion给出'4.8.6‘PySide.QtCore.__version__也是'4.8.6',这意味着PySide是用我正在使用的Qt版本编译的。
要修复的错误
Traceback (most recent call last):
File "<some file I made>", line 133, in <module>
testPlot0()
File "<some file I made>", line 52, in testPlot0
layout.addWidget(plot, 0, 1, 3, 1) # plot goes on right side, spanning 3 rows
TypeError: 'PySide.QtGui.QGridLayout.addWidget' called with wrong argument types:
PySide.QtGui.QGridLayout.addWidget(PlotWidget, int, int, int, int)
Supported signatures:
PySide.QtGui.QGridLayout.addWidget(PySide.QtGui.QWidget, int, int, PySide.QtCore.Qt.Alignment = 0)
PySide.QtGui.QGridLayout.addWidget(PySide.QtGui.QWidget, int, int, int, int, PySide.QtCore.Qt.Alignment = 0)
PySide.QtGui.QGridLayout.addWidget(PySide.QtGui.QWidget)产生此错误的代码
from PySide import QtGui # (the example applies equally well to PySide)
import pyqtgraph as pg
## Always start by initializing Qt (only once per application)
app = QtGui.QApplication([])
## Define a top-level widget to hold everything
w = QtGui.QWidget()
## Create some widgets to be placed inside
btn = QtGui.QPushButton('press me')
text = QtGui.QLineEdit('enter text')
listw = QtGui.QListWidget()
plot = pg.PlotWidget()
## Create a grid layout to manage the widgets size and position
layout = QtGui.QGridLayout()
w.setLayout(layout)
## Add widgets to the layout in their proper positions
layout.addWidget(btn, 0, 0) # button goes in upper-left
layout.addWidget(text, 1, 0) # text edit goes in middle-left
layout.addWidget(listw, 2, 0) # list widget goes in bottom-left
layout.addWidget(plot, 0, 1, 3, 1) # plot goes on right side, spanning 3 rows
## Display the widget as a new window
w.show()
## Start the Qt event loop
app.exec_()发布于 2015-08-17 16:43:02
可能正在发生的事情是,pyqtgraph不使用不可知的导入,而是使用特定的PyQt导入并创建类型小部件:
PyQt.QtGui.QWidget
而不是
PySide.QtGui.QWidget
您可能需要进入pyqtgraph的源代码并将其导入更改为与您的导入相匹配。
同时支持PySide和PyQt
在本页底部:
它讨论了如何使您的代码对pyside about导入更加不可知。要么使用py_compat.py,要么构建/安装一个名为python_qt_binding的中间件加载程序,然后将所有的标题更改为使用中性的标题。
发布于 2016-11-11 12:21:23
我也遇到了同样的问题,并无意中指责此链接。
显然你需要
如果您的系统上安装了这两个库,并且希望强制pyqtgraph使用其中一个库,只需确保它在pyqtgraph之前导入:
就像这样:
import PySide ## this will force pyqtgraph to use PySide instead of PyQt4
import pyqtgraph as pg这解决了我的问题。
https://stackoverflow.com/questions/32054237
复制相似问题