首页 > 解决方案 > 使用 PyQt5 更新嵌入式 matplotlib

问题描述

我需要帮助尝试更新我在 pyqt5 上的嵌入式 matplotlib。我尝试了.clear(), .draw(),但我的应用程序上出现了空白画布。我确信我的语法有问题。下面是我的代码:

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, position=[0.15, 0.15, 0.75, 0.75])
        super(MplCanvas, self).__init__(fig)
    
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.eosCombo.addItems(self.getEoS())
        self.ui.componentCombo.addItems(self.getComponents())
        self.ui.variablesSubmitButton.clicked.connect(self.submitVarButFunc)
        self.ui.resultsSubmitButton.clicked.connect(self.goalSeek)
    
    def graphIt(self,x,y):
        sc = MplCanvas(self, width=5, height=4, dpi=100)
        sc.axes.clear()
        sc.axes.plot(x, y)
        sc.axes.draw()
        sc.axes.set_xlabel('ρ (mole/$m^{3}$)')
        sc.axes.set_xlim(left = 0)
        sc.axes.grid(b=True, which = 'major')
        toolbar = NavigationToolbar2QT(sc, self)
        lay = QtWidgets.QVBoxLayout(self.ui.mplWidget)
        lay.addWidget(toolbar)
        lay.addWidget(sc)
        
        self.show()
        
    # def graphIt_Clear(self):
    #     self.sc.axes.cla()
    #     self.sc.draw()

标签: pythonmatplotlibpyqt5

解决方案


推荐阅读