Очистить виджет от графиков MplWidget

При попытке задействовать кнопку очистки виджета (self.pushButton_Clean_All.clicked.connect(self.clear)) ничего не происходит, код прилагается:

from PyQt5.QtWidgets import*
from PyQt5.uic import loadUi

from matplotlib.backends.backend_qt5agg import (NavigationToolbar2QT as NavigationToolbar)

import numpy as np

class MatplotlibWidget(QMainWindow):

def __init__(self):
    
    QMainWindow.__init__(self)

    loadUi("qt_designer.ui",self)

    self.setWindowTitle("Модель распределения температуры при закачке жидкости в скважину")

    self.pushButton_graph.clicked.connect(self.update_graph)

    self.addToolBar(NavigationToolbar(self.MplWidget.canvas, self))

    self.pushButton_Clean_All.clicked.connect(self.clear)
    
    
def update_graph(self):

    T0= self.spinBox.value()
    G= self.doubleSpinBox.value()
    c= self.spinBox_1.value()
    p= self.spinBox_2.value()
    Q= self.spinBox_3.value()
    m= self.doubleSpinBox_2.value()
    r0= self.spinBox_4.value()
    r1= self.doubleSpinBox_3.value()
    r2= self.doubleSpinBox_4.value()
    r3= self.doubleSpinBox_5.value()
    r4= self.doubleSpinBox_6.value()
    r5= self.doubleSpinBox_7.value()
    aгп= self.spinBox_5.value()
    tр= self.spinBox_6.value()
    l= self.doubleSpinBox_8.value()
    lнкт= self.doubleSpinBox_9.value()
    lок= self.doubleSpinBox_10.value()
    lц= self.doubleSpinBox_11.value()
    lмт= self.doubleSpinBox_12.value()
    lгп= self.doubleSpinBox_13.value()
    dT0= self.doubleSpinBox_14.value()
    Re=p*Q/(np.pi*m*(r1)**2)
    Pr=m*c/l
    Nu=0.021*Re**0.8*Pr**0.43
    t=aгп*tр/(r5)**2
    Td=np.log((np.exp(-0.2*t))+(1.5-0.3719*(np.exp(-t))*np.sqrt(t)))
    h=2*np.pi/(1/(l*Nu)+1/lнкт*np.log(r2/r1)+1/lок*np.log(r4/r3)+1/lц*np.log(r5/r4)+1/lмт*np.log(r3/r2)+1/lгп*Td)
    a=h/(2*np.pi*r1)
    B=c*p*Q/(2*np.pi*r0*a)        

    x = np.arange(0, 2000, 1)
    
    y =T0+G*x-B*G*(1-np.exp(-x/B))+dT0*np.exp(-x/B)
    
    self.MplWidget.canvas.axes.plot(y,x)
    self.MplWidget.canvas.axes.grid()
    self.MplWidget.canvas.axes.set_title('Модель Чекалюка')
    self.MplWidget.canvas.draw()
    
    
def clear(self):
    
    self.MplWidget.canvas.axes.figure.clear()
    
app = QApplication([])
window = MatplotlibWidget()
window.show()
app.exec_()

Интересует именно строка self.MplWidget.canvas.axes.figure.clear(). Менял на self.MplWidget.canvas.axes.clear(), но результат тот же. В чём может быть проблема? На всякий случай прилагаю также код загружаемого виджета:

from PyQt5.QtWidgets import*

from matplotlib.backends.backend_qt5agg import FigureCanvas

from matplotlib.figure import Figure


class MplWidget(QWidget):

    def __init__(self, parent = None):

        QWidget.__init__(self, parent)
    
        self.canvas = FigureCanvas(Figure())
    
        vertical_layout = QVBoxLayout()
        vertical_layout.addWidget(self.canvas)
    
        self.canvas.axes = self.canvas.figure.add_subplot(111)
        self.setLayout(vertical_layout)
    

Не уверен, можно ли так делать, но чтобы не плодить темы с идентичным кодом хотел бы задать вопрос по второй проблеме:

При попытке построить следующий график через одно нажатие на self.pushButton_graph.clicked.connect(self.update_graph) пропадает сетка, также не могу понять в чем проблема. Пытался grid() вставлять в разные части кода, но безрезультатно. Также прикрепляю ui-файл:

qt_designer.ui

Заранее спасибо за ответ!


Ответы (0 шт):