2014-03-25 186 views
1

我使用QT Designer在PyQt中創建了一個小應用程序。我有一些按鈕,「Plot」按鈕在4個不同的Widget上創建4個圖。 「清除」按鈕必須清除這4個地塊。我嘗試寫一些代碼,但它不運行。我怎樣才能創建這個清除按鈕?謝謝。如何清除PyQt中的圖表?

這是主要的我的應用程序:

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_()) 
+1

PyQt的代碼看起來好像沒什麼問題。按鈕連接正確:您可以通過在Clear方法的頂部添加'print(「clear」)'來檢查。所以matplotlib的東西一定有問題(我不太熟悉)。 – ekhumoro

+0

我把打印('清除'),當我點擊按鈕時,我可以看到我的Python支架上的'打印'。因此,按鈕運行良好,但數字不明確。 – Gianluca

+0

我對matplotlib瞭解不多,但是如果你搜索到了,你應該能夠找到答案。試試[這個問題](http://stackoverflow.com/q/8213522/984421)和[this one](http://stackoverflow.com/q/741877/984421)。 – ekhumoro

回答

2

看來,你必須重新繪製在畫布上以清除情節:

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() 
+0

我會試試這個代碼,謝謝 – Gianluca

+0

你的代碼運行,謝謝 – Gianluca