在同一窗口中包含按钮和图形(Python,Matplotlib)

时间:2018-06-22 19:11:50

标签: python matplotlib button graph window

我在编码方面还很陌生,我正在尝试创建一个可以在图表上逐步绘制数据的图表,但是我不确定如何将“开始按钮”和该图表放到同一窗口中。有没有办法使它们成为一个窗口?

代码的第一部分是关于开始按钮(单击它会开始绘制图形),代码的第二部分是实际图形和一个if语句,用于检查何时按下了开始按钮。

这是我的代码:

import time
import matplotlib
matplotlib.use('WXAgg')

#imports
import sys
from PyQt4 import QtGui, QtCore
import matplotlib.pyplot as plt

#Moving graph
import matplotlib.pyplot as plt
import numpy as np

#Height and Width
x = 10
y = 0

plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'b-') 

#
    class Window(QtGui.QMainWindow):
        def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle("Start")
        self.setWindowIcon(QtGui.QIcon('pythonlogo.png')) 
        self.home()

    def home(self):
        self.btn = QtGui.QPushButton("Start", self)

        self.btn.resize(self.btn.minimumSizeHint())
        self.btn.move(10,10)
        self.show()
        self.btn.setCheckable(True)
        self.btn.setEnabled(True)
        self.btn.clicked.connect(self.btnHandler)

    def graph(self, formula, x_range):
        x = np.array(x_range)  
        y = eval(formula)
        plt.plot(x, y)  
        plt.show()
    plt.pause(.5)
    print("printing")

    def btnHandler(self):
    i = 10
    if self.btn.isChecked():    
        while i%2==0:           
            #self.plt.clf()
            self.graph('np.sin(x)', range(i-20, i))
            print("printed")
                    self.btn.setEnabled(False)
            i+=2
            time.sleep(.5)

    def start_application(self):
        print("Done")

def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())

run()

0 个答案:

没有答案