首页 > 编程语言 > 详细

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

时间:2019-05-27 21:49:08      阅读:159      评论:0      收藏:0      [点我收藏+]

技术分享图片

技术分享图片

import os
import platform
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

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


class myMainWindow(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()
            
      def generateData(self, x1, r):
            arr = [x1]
            x = x1
            for i in range(1, 99):
                  x = r * x * (1-x)
                  arr.append(x)
            d = np.array(arr)
            return d

      def updateUi(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_()

 

技术分享图片

 

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

原文:https://www.cnblogs.com/caiyishuai/p/10933523.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!