I am new to this and wonder what went wrong when trying to add plot when using Pyuic converted py files. I tried to follow the answer of this web page, but I seem to have made a mistake. Put a Matplotlib plot as a QGraphicsItem/into a QGraphicsView
Traceback (most recent call last):
File "C:\Users\Administrator\PycharmProjects\Request_Project\Non_real_time_recognition.py", line 155, in <module>
ui.setupUi(form)
File "C:\Users\Administrator\PycharmProjects\Request_Project\Non_real_time_recognition.py", line 87, in setupUi
proxy_widget=self.scene.addWidget(canvas)
TypeError: addWidget(self, QWidget, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags()): argument 1 has unexpected type 'FigureCanvasTemplate'
import h5py
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from PyQt5 import QtCore, QtGui, QtWidgets
import scipy.io as scio
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QGraphicsScene, QGraphicsPixmapItem
from matplotlib.backends.backend_template import FigureCanvas
from PyQt5.QtGui import QPainter, QPixmap, QWheelEvent
from matplotlib.figure import Figure
class UiForm(object):
def __init__(self):
E1 = scio.loadmat('S1_E1_A1.mat')
# display emg data,shape:[2292526,16]
self.E1_emg = E1['emg']
self.E1_label = E1['restimulus']
def setupUi(self,Form):
Form.setObjectName("Form")
Form.resize(550, 419)
Form.setFixedSize(Form.width(), Form.height())
# plt.plot(self.E1_emg[0:200000] * 20000)
# plt.plot(self.E1_label[0:200000]*100)
self.Plotting = QtWidgets.QGraphicsView(Form)
self.Plotting.setGeometry(QtCore.QRect(10, 10, 361, 171))
self.Plotting.setObjectName("Plotting")
self.scene=QtWidgets.QGraphicsScene()
figure=Figure()
axes=figure.gca()
axes.set_title("sEMG")
x=np.linspace(0,200000,num=200000)
y=self.E1_emg[0:200000] * 20000
axes.plot(x,y,"-k",label="sEMG")
axes.legend()
axes.grid(True)
canvas=FigureCanvas(figure)
proxy_widget=self.scene.addWidget(canvas)
self.Plotting.setScene(proxy_widget)
self.Image = QtWidgets.QGraphicsView(Form)
self.Image.setGeometry(QtCore.QRect(390, 10, 151, 171))
self.Image.setObjectName("Image")
.....
The problem is solved.
I import from matplotlib.backends.backend_template import FigureCanvas
, now import from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
.
self.Plotting.setScene(proxy_widget)
to self.Plotting.setScene(self.scene)