【问题标题】:How to clear a plot in PyQt?如何清除 PyQt 中的绘图?
【发布时间】:2014-05-03 03:00:47
【问题描述】:

我使用 QT Designer 在 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_())

【问题讨论】:

  • PyQt 代码对我来说看起来不错。按钮连接正确:您可以通过将print("clear") 放在Clear 方法的顶部自行检查。所以matplotlib的东西一定有问题(我不是很熟悉)。
  • 我输入了 print('clear'),当我单击 Push Button 时,我可以在 Python 控制台上看到 'print'。所以Push button运行良好但图不清楚。
  • 我对matplotlib了解不多,但是如果你搜索SO,你应该可以找到答案。试试this questionthis one
  • 不幸的是,我的清除按钮仍未运行。很奇怪,网上有很多例子,都用我这样的代码。
  • 你能提供一个更简单、独立的例子来说明问题吗?您当前的示例无法测试,因为缺少 Import_fsa 模块。

标签: python qt plot pyqt4


【解决方案1】:

看来你必须重新绘制画布才能清除情节:

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

【讨论】:

    猜你喜欢
    • 2017-07-23
    • 2016-01-21
    • 2015-05-29
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多