Python 如何清除PyQt中的绘图?

Python 如何清除PyQt中的绘图?,python,qt,plot,pyqt4,Python,Qt,Plot,Pyqt4,我使用QT设计器在PyQt中创建了一个小应用程序。我有一些按钮,“绘图”按钮在4个不同的小部件上创建4个绘图。“清除”按钮必须清除这4个图。我试着写一些代码,但是没有运行。如何创建此清除按钮?多谢各位 这是我的应用程序的主要功能: import sys from Import_fsa import import_fsa from PyQt4 import QtCore, QtGui from PyQt4.QtGui import QFileDialog from Vannucci_Gemigna

我使用QT设计器在PyQt中创建了一个小应用程序。我有一些按钮,“绘图”按钮在4个不同的小部件上创建4个绘图。“清除”按钮必须清除这4个图。我试着写一些代码,但是没有运行。如何创建此清除按钮?多谢各位

这是我的应用程序的主要功能:

import sys
from Import_fsa import import_fsa
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QFileDialog
from Vannucci_Gemignani import Ui_MainWindow


class GUI_fsa(QtGui.QMainWindow):
    def __init__(self):

        QtGui.QMainWindow.__init__(self)
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.Button_Browse.clicked.connect(self.Browse)
        self.ui.Button_Plot.clicked.connect(self.Plot)
        self.ui.Button_Clear.clicked.connect(self.Clear)

    def Browse(self):

        fname=QFileDialog.getOpenFileName()
        if fname=='':  #se non viene selezionato nessun file, fname è
            return     #nullo, generando quindi un errore nell'import fsa

        self.ui.lineEdit.setText(fname)




    def Plot(self):
        if self.ui.lineEdit.text()=='':
            QtGui.QMessageBox.information(None,'Warning','Select fsa File',QtGui.QMessageBox.Ok)
            return

        data_set=import_fsa(self.ui.lineEdit.text())        

        self.ui.widget.canvas.ax.clear()
        self.ui.widget_2.canvas.ax.clear()
        self.ui.widget_3.canvas.ax.clear()
        self.ui.widget_4.canvas.ax.clear()

        self.ui.widget.canvas.ax.plot(data_set[0])
        self.ui.widget_2.canvas.ax.plot(data_set[1])
        self.ui.widget_3.canvas.ax.plot(data_set[2])
        self.ui.widget_4.canvas.ax.plot(data_set[3])

        self.ui.widget.canvas.draw()
        self.ui.widget_2.canvas.draw()
        self.ui.widget_3.canvas.draw()
        self.ui.widget_4.canvas.draw()

    def Clear(self):
        self.ui.widget.canvas.ax.clear()
        self.ui.widget_2.canvas.ax.clear()
        self.ui.widget_3.canvas.ax.clear()
        self.ui.widget_4.canvas.ax.clear()


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    MainWindow = GUI_fsa()
    MainWindow.show()
    sys.exit(app.exec_())

似乎必须重新绘制画布才能清除绘图:

    def Clear(self):
        self.ui.widget.canvas.ax.clear()
        self.ui.widget.canvas.draw()
        self.ui.widget_2.canvas.ax.clear()
        self.ui.widget_2.canvas.draw()
        self.ui.widget_3.canvas.ax.clear()
        self.ui.widget_3.canvas.draw()
        self.ui.widget_4.canvas.ax.clear()
        self.ui.widget_4.canvas.draw()

似乎必须重新绘制画布才能清除绘图:

    def Clear(self):
        self.ui.widget.canvas.ax.clear()
        self.ui.widget.canvas.draw()
        self.ui.widget_2.canvas.ax.clear()
        self.ui.widget_2.canvas.draw()
        self.ui.widget_3.canvas.ax.clear()
        self.ui.widget_3.canvas.draw()
        self.ui.widget_4.canvas.ax.clear()
        self.ui.widget_4.canvas.draw()

PyQt代码在我看来很好。按钮连接正确:您可以将
print(“clear”)
放在
clear
方法的顶部,自己检查。所以matplotlib的东西(我不太熟悉)一定有问题。我把print('clear')放进去,当我点击按钮时,我可以在我的Python控制台上看到print。所以按钮运行得很好,但图不清楚。我对matplotlib了解不多,但如果搜索,应该可以找到答案。试试看,不幸的是,我的清除按钮仍然没有运行。奇怪的是,网络上有很多例子,而且都使用像我这样的代码。你能提供一个更简单、自包含的例子来说明这个问题吗?您当前的示例无法测试,因为缺少
Import\u fsa
模块。PyQt代码在我看来很好。按钮连接正确:您可以将
print(“clear”)
放在
clear
方法的顶部,自己检查。所以matplotlib的东西(我不太熟悉)一定有问题。我把print('clear')放进去,当我点击按钮时,我可以在我的Python控制台上看到print。所以按钮运行得很好,但图不清楚。我对matplotlib了解不多,但如果搜索,应该可以找到答案。试试看,不幸的是,我的清除按钮仍然没有运行。奇怪的是,网络上有很多例子,而且都使用像我这样的代码。你能提供一个更简单、自包含的例子来说明这个问题吗?无法测试当前示例,因为缺少
Import\u fsa
模块。