我在编码方面还很陌生,我正在尝试创建一个可以在图表上逐步绘制数据的图表,但是我不确定如何将“开始按钮”和该图表放到同一窗口中。有没有办法使它们成为一个窗口?
代码的第一部分是关于开始按钮(单击它会开始绘制图形),代码的第二部分是实际图形和一个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()