我在用PySide6实现pyqtgraph时遇到了麻烦,我已经顺利地用PyQt5实现了pyqtgraph,但是我正在用PySide6专门为一个新项目创建一个新应用程序。
我检查了pyqtgraph文档,它说在pyqtgraph之前导入您的Qt Package 器,这样它就知道要使用哪个。
import sys
from PySide6.QtWidgets import QMainWindow, QApplication, QTabWidget
from gui_scripts.tab_plot import PlotTab
import PySide6
import pyqtgraph as pg
from __feature__ import snake_case, true_property
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.graph_widget = pg.PlotWidget()
self.set_central_widget(self.graph_widget)
hour = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
temperature = [30, 32, 34, 32, 33, 31, 29, 32, 35, 45]
self.graph_widget.plot(hour, temperature)
if __name__ == "__main__":
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec())
我收到一个“递归错误:调用Python对象”时超出最大递归深度“,在self.graph_widget = pg.PlotWidget()的情况下触发
我使用这个例子https://www.pythonguis.com/tutorials/pyside-plotting-pyqtgraph/来生成同样的错误,因为我的实际实现是跨几个脚本的,应用程序有一个导航选项卡,可以在几个接口之间切换,其中一个接口将是一个绘图,代码工作得很好,直到我添加了绘图选项卡。
编辑:当我不从tab_plot导入类时,代码没有问题。
from PySide6.QtWidgets import QWidget, QGridLayout
import sys
import pyqtgraph as pg
from __feature__ import snake_case, true_property
class PlotTab(QWidget):
def __init__(self, parent):
QWidget.__init__(self)
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
self.parent = parent
self.layout = QGridLayout(self)
self.plot1 = pg.PlotWidget()
self.plot1.setLabel('left', 'Temperature (K)')
self.plot1.setLabel('bottom', 'Voltage (V)')
self.layout.add_widget(self.plot1, 0, 0)
Edit2:这是发生在以下位置的错误:self.plot1 = pg.绘图小部件()文件“..\Python\Python310\lib\站点包\pyqtgraph\小部件\绘图小部件. py”,第51行,在init图形视图中。init(自,父,背景=背景)
文件“..\Python\Python 310\lib\站点包\pyqtgraph\widgets\图形视图. py”,第73行,在initself中。使用OpenGL(使用OpenGL)
文件“..\Python\Python 310\lib\站点包\pyqtgraph\widgets\图形视图. py”,第168行,正在使用OpenGL自定义.setViewport(v)
文件“..\Python\Python310\lib\站点包\pyqtgraph\widgets\PlotWidget.py”,第78行,在getattr中,如果有属性(self.plotItem,attr):
文件..\Python\Python310\lib\站点包\pyqtgraph\widgets\PlotWidget.py”,第78行,在getattr中,如果有属性(self.plotItem,attr):
文件“..\Python\Python310\lib\站点包\pyqtgraph\widgets\PlotWidget.py”,第78行,在getattr中,如果有属性(self.plotItem,attr):[上一行重复了988次]递归错误:调用Python对象时超出最大递归深度
进程已完成,退出代码为1
3条答案
按热度按时间a7qyws3x1#
好的,我明白了。pyqtgraph与PySide6的snake_case特性不兼容。我认为删除它不会有影响,但它仍然导入了使用它的脚本。
kgsdhlau2#
我想你需要
def __init__(self):
之后的super(MainWindow, self).__init__()
这样对我很好
uinbv5nw3#
我遇到了同样的问题,并找到了答案:更新你的pyqtgraph版本