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. RabbitMQ各种交换机类型Exchange Types介绍

    最新版本的RabbitMQ有四种交换机类型,分别是Direct exchange.Fanout exchange.Topic exchange.Headers exchange. 一.Direct E ...

  2. 《Python基础教程》第二章:列表和元组(2)

    list函数可以将字符串转换为列表 ' '.join(somelist)可以将列表转换为字符串 从列表中删除元素可以使用del语句来实现 方法是与对象有紧密联系的函数:对象.方法(参数) append ...

  3. windows下基于IIS配置ssl证书遇到的坑

    前几天配置windows下基于IIS配置ssl证书 完全按照步骤执行 绑定https网址后,一直显示:无法访问此网站 检查了443端口,还有防火墙限制,没发现什么 足足困扰了我好几天 后来突然想到前不 ...

  4. main方法类 为何由AppClassLoader加载

    AppClassLoader AppClassLoader应用类加载器,又称系统类加载器,负责在JVM启动时加载来自命令java中的classpath或者java.class.path系统属性或者CL ...

  5. npm更换成淘宝镜像源以及cnpm

    1.需求由来 由于node安装插件是从国外服务器下载,受网络影响大,速度慢且可能出现异常.所以如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队(阿里巴巴旗下业务阿里云)干了这事.来自官网:“ ...

  6. ubuntu设置窗口最大化

    三行命令搞定Ubuntu 16.04下安装VMware Tools!!!!!!!!! 由于下载的是ubuntu-16.04.3-desktop-amd64,需要安装vmware tools,以往提取的 ...

  7. jquery animate()方法 语法

    jquery animate()方法 语法 作用:animate() 方法执行 CSS 属性集的自定义动画.该方法通过CSS样式将元素从一个状态改变为另一个状态.CSS属性值是逐渐改变的,这样就可以创 ...

  8. jquery scroll()方法 语法

    jquery scroll()方法 语法 作用:当用户滚动指定的元素时,会发生 scroll 事件.scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口).scroll() 方法 ...

  9. excel 数据读写 Aspose.Cells.dll

    private void Form1_Load(object sender, EventArgs e) { writeExcel(); Workbook workbook = new Workbook ...

  10. 20190716NOIP模拟赛T2 通讯(tarjan缩点+贪心)

    题目描述 “这一切都是命运石之门的选择.” 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短 信,并由此得知了伦太郎制作出了电话微波炉(仮). 为了掌握时间机器的技术,SERN总部 ...