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上画图)的更多相关文章

  1. Python接口测试实战1(上)- 接口测试理论

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  2. Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)

    性能测试计划 性能测试用例 录制脚本 性能测试结果 性能测试报告 性能测试监控报告 准备工作 从脚本已录制成功之后开始进行压测 安装Jmeter拓展插件 查看 Transactions per Sec ...

  3. Python字典使用--词频统计的GUI实现

    字典是针对非序列集合而提供的一种数据类型,字典中的数据是无序排列的. 字典的操作 为字典增加一项 dict[key] = value students = {"Z004":&quo ...

  4. Python接口测试实战5(上) - Git及Jenkins持续集成

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  5. Python接口测试实战4(上) - 接口测试框架实战

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  6. Python接口测试实战3(上)- Python操作数据库

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  7. python实现串口通讯小程序(GUI界面)

    python实现串口通讯小程序(GUI界面) 使用python实现串口通讯需要使用python的pyserial库来实现,这个库在安装python的时候没有自动进行安装,需要自己进行安装. 1.安装p ...

  8. Python Django CMDB项目实战之-3创建form表单,并在前端页面上展示

    基于之前的项目代码 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页.index页.文章页面 Python Django CMDB项目实战之-2创建APP. ...

  9. Unity3D入门之GUI基础以及常用GUI控件使用(2)

    1.GUI基础 (1)GUI部分是每帧擦除重绘的,只应该在OnGUI中绘制GUI,按钮:GUILayout.Button(“Hello”); 只读标签:GUILayout.Label() (2)修改控 ...

随机推荐

  1. Ubuntu 18.04 启动太慢不能忍

    检查谁在搞鬼 $ systemd-analyze blame 结果 39.828s plymouth-quit-wait.service 39.311s apt-daily.service 30.93 ...

  2. maven的配置和eclipse maven插件安装

    1.下载maven:http://maven.apache.org/download.cgi 2. 配置环境变量: 3. 修改maven文件夹下bin/conf/settings.xml:maven仓 ...

  3. 第七章 路由 82 名称案例-使用keyup事件实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  4. CSS如何水平垂直居中?

    CSS如何水平垂直居中? 1.CSS如何实现水平居中? margin: 0 auto 2.CSS如何实现水平垂直居中? 首先设置一个div元素,设置背景颜色以便看出变化.代码如下: <!DOCT ...

  5. ubuntu配置环境变量 sudo gedit /etc/profile

    文件末尾加入下面 JAVA_HOME 是jdk主目录 export JAVA_HOME=/usr/jdkexport JRE_HOME=${JAVA_HOME}/jre  export CLASSPA ...

  6. Winforms界面开发DevExpress v19.2:Map、Pivot Grid等功能增强

    DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.无论是Office风格的界面,还是分析处理大批量的业务数据,DevExpr ...

  7. laravel 视图流程控制,if switch for loop

    流程控制 除了模板继承和数据显示之外,Blade 还为常用的 PHP 流程控制提供了便利操作,例如条件语句和循环,这些快捷操作提供了一个干净.简单的方式来处理 PHP 的流程控制,同时保持和 PHP ...

  8. Prism框架中View与Region关联的几种方式

    Prism.Regions命名空间下有2个重要接口:IRegionManager.IRegion IRegionManager接口中的方法与属性:AddToRegion().RegisterViewW ...

  9. SQL中where in的用法

    首先我们要知道where是什么:一个判断符.在SQL操作中,控制只选择指定的行. in的其实归类于特殊的比较运算符 expr1 between expr2 and expr3:表示expr1的值在ex ...

  10. C库函数-fgets()

    函数声明:char *fgets(char *str,int n,FILE *stream) 函数介绍:从指定的stream流中读取一行,并把它存储在str所指向的字符串中.当读取到(n-1)个字符时 ...