更新PyQt小部件

时间:2012-07-18 14:59:15

标签: python matplotlib pyqt

我有一个Python程序,可以使用自定义matplotlib小部件绘制一个简单的图形。 我的代码如下:

import sys
from GUI import *
import random
import matplotlib.pyplot as plt

class GUIForm(QtGui.QDialog):

    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        QtCore.QObject.connect(self.ui.pushButton,
                               QtCore.SIGNAL('clicked()'), self.PlotFunc)

    def PlotFunc(self):
        randValList = random.sample(range(0, 10), 10)
        print(randValList)
        self.ui.PlotWidget.canvas.ax.clear()
        self.ui.PlotWidget.canvas.ax.plot(randValList)

    def callFunc(self):
        myapp.PlotFunc()


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

当我运行程序时,我可以看到GUI,但是当我点击按钮时,图表没有显示该行。空图是可见的。 但是,如果我dO

def __init__(self, parent=None):
            QtGui.QWidget.__init__(self,parent)
            self.ui = Ui_Dialog()
            self.ui.setupUi(self)

            QtCore.QObject.connect(self.ui.pushButton,
                                   QtCore.SIGNAL('clicked()'), self.PlotFunc)
            self.ui.PlotWidget.canvas.ax.plot(randValList)

if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        myapp = GUIForm()
        myapp.show()
        self.PlotFunc()
        sys.exit(app.exec_())

程序绘制图表。 所以我猜测它与sys.exit(app.exec_())有关,但不知道如何解决这个问题。 任何帮助表示赞赏。

谢谢。

1 个答案:

答案 0 :(得分:3)

如果你在PlotFunc的末尾添加这一行,它是否有效?

self.ui.PlotWidget.canvas.draw()