from PyQt5.QtWidgets import QHBoxLayout, QPushButton, QVBoxLayout, QWidget from PyQt5.QtCore import QObject, pyqtSignal, Qt import matplotlib matplotlib.use('Qt5Agg') from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg from matplotlib.figure import Figure class MplCanvas(FigureCanvasQTAgg): def __init__(self, parent=None, width=5, height=4, dpi=100): fig = Figure(figsize=(width, height), dpi=dpi) self.axes = fig.add_subplot(111) super(MplCanvas, self).__init__(fig) class PlotScreen(QWidget): close_signal = pyqtSignal() def __init__(self, parent) -> None: super().__init__(parent=parent) sc = MplCanvas(self, width=5, height=4, dpi=100) sc.axes.plot([0,1,2,3,4], [10,1,20,3,40]) self.setLayout(QVBoxLayout()) self.layout().addWidget(sc) close_btn = QPushButton("close") close_btn.clicked.connect(self.on_close) self.layout().addWidget(close_btn) def on_close(self): self.close_signal.emit() def plot(self, item): print("plot!", item)