2

カスタムmatplotlibウィジェットを使用して簡単なグラフをプロットするPythonプログラムがあります。私のコードは次のとおりです。

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が表示されますが、ボタンをクリックするとプロットに線が表示されません。空のプロットが表示されます。しかし、私がやったら

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_())、これを修正する方法がわかりません。どんな助けでも大歓迎です。

ありがとうございました。

4

1 に答える 1

4

万が一、PlotFuncの最後にこの行を追加すると機能しますか?

self.ui.PlotWidget.canvas.draw()
于 2012-07-22T15:02:44.330 に答える