python画图实战_python programming GUI综合实战(在GUI上画图)

importosimportplatformimportsysfrom PyQt5.QtCore import *

from PyQt5.QtGui import *

from PyQt5.QtWidgets import *

importnumpy as npimportmatplotlib

matplotlib.use("Qt5Agg")from matplotlib.backends.backend_qt5agg importFigureCanvasQTAgg as FigureCanvasfrom matplotlib.figure import Figure #注意不是pyplot下的那个figure

classmyMainWindow(QMainWindow):def __init__(self, parent=None):

super().__init__(parent)

self.setWindowTitle("Logistic Map: x:=rx(1-x)")#添加工具栏

self.labelX = QLabel('x1:')

self.labelR= QLabel('r:')

self.spinX=QDoubleSpinBox()

self.spinX.setRange(0,1)

self.spinX.setValue(0.02)

self.spinX.setSingleStep(0.01)

self.spinR=QDoubleSpinBox()

self.spinR.setRange(1.0, 6.0)

self.spinR.setValue(2.0)

self.spinR.setSingleStep(0.02)

s= QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Expanding)

self.layout=QHBoxLayout()

self.layout.addWidget(self.labelX)

self.layout.addWidget(self.spinX)

self.layout.addWidget(self.labelR)

self.layout.addWidget(self.spinR)

self.layout.addSpacerItem(s)

self.containWidget=QWidget()

self.containWidget.setLayout(self.layout)

self.toolDockWidget= QDockWidget("Input:", self)

self.toolDockWidget.setAllowedAreas(Qt.BottomDockWidgetArea)

self.toolDockWidget.setWidget(self.containWidget)

self.addDockWidget(Qt.BottomDockWidgetArea, self.toolDockWidget)

self.spinX.valueChanged.connect(self.updateUi)

self.spinR.valueChanged.connect(self.updateUi)#绘图

self.fig = Figure(figsize=(12, 6), dpi=100)

self.figureCanvas=FigureCanvas(self.fig)

self.graphicscene=QGraphicsScene()

self.graphicscene.addWidget(self.figureCanvas)

self.graphicview=QGraphicsView()

self.graphicview.setScene(self.graphicscene)

self.setCentralWidget(self.graphicview)

self.updateUi()defgenerateData(self, x1, r):

arr=[x1]

x=x1for i in range(1, 99):

x= r * x * (1-x)

arr.append(x)

d=np.array(arr)returnddefupdateUi(self):#计算

self.x1 =self.spinX.value()

self.r=self.spinR.value()

self.data=self.generateData(self.x1, self.r)#显示

self.fig.clf()

self.ax= self.fig.add_subplot(1,1,1)

self.ax.plot(self.data)

self.figureCanvas.draw()

app=QApplication(sys.argv)

form=myMainWindow()

form.setMinimumSize(1500, 800)

form.show()

app.exec_()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值