第15.15节 PyQt(Python+Qt)入门学习:Designer的menu菜单、toolBar工具栏和Action动作详解

【Qt】利用Tool Button控件创建下拉菜单按钮 基于qt的ui界面开发 阅读详情

一、引言

Qt Designer中的部件栏并没有菜单、toolBar以及Action相关的部件,仅在MainWindow类型窗口提供了menu、toolBar相关的功能,Action可以在右侧的Action Editor中编辑,如图:
在这里插入图片描述
如果没有出现Action Editor,可以通过鼠标右键的弹出菜单将其打开,如图:
在这里插入图片描述

二、Action

2.1、功能

Action是Qt中单独引入的一个对象,对应QAction类。Action表示一个独立的操作,是将界面上某个可以通过菜单、快捷键、toolBar按钮执行的同一个操作映射到同一个Action对象,由该对象通过信号触发实际的操作。

2.2、Action的属性

Action对象在Qt Designer中可以设置快捷键、图标、toolTip、是否可选择等属性,可以通过triggered()信号连接槽函数。如图:
在这里插入图片描述

2.3、Action创建的方法

在Qt Designer中,可以两种方法创建Action对象,一种是菜单定义时,一种是单独定义。

2.3.1、定义菜单创建Action

在Qt Designer中创建菜单时,如果对应菜单是最终执行的菜单项,则添加菜单项时自动创建了对应的Action对象,炳辉自动建立二者的关联。如图:
在这里插入图片描述
上图录入了一个“member manage”的菜单,但还未最终提交,可以看到右下角的Action Editor中并没有对应的Action对象。录入完成后情况如下:
在这里插入图片描述

2.3.2、直接创建Action

在Qt Designer的Action Editor中可以直接创建新的Action对象,如图:
在这里插入图片描述
点击上面蓝色圈标记的图标就可以Action属性编辑界面,如图:

在这里插入图片描述
可以在属性编辑中设置相关的属性。

2.4、Action关联menu菜单

通过菜单创建的Action,已经与菜单自动关联,如果是单独创建的Action,需要与菜单挂接时,直接将Action Editor中定义好的Action对象拖拽到菜单栏上即可以新建一个与Action对应的单独菜单项,从而实现Action与菜单的关联。

2.5、Action关联toolBar工具栏

创建的Action对象,如果需要在toolBar中呈现,需要将Action与toolBar挂接时,直接将Action Editor中定义好的Action对象拖拽到toolBar上即可。

2.6、Action通过代码关联toolBar、menu

一个已经存在的Action对象,除了上面介绍的在Qt Designer中实现与toolBar、menu关联的方法外,还可以直接通过代码实现关联。关联方法为:
toolBar对象.addAction(action对象)
menu对象.addAction(action对象)

实际上通过Qt Designer在界面上的关联也是通过addAction方法实现的,界面生成的代码如下例所示:

		self.menusystem.addAction(self.actionQuit)
        self.menusystem.addAction(self.actionAbout)
        self.menusystem.addAction(self.actionFind)
        self.toolBar.addAction(self.actionQuit)
        self.toolBar.addAction(self.actionAbout)
        self.toolBar.addAction(self.actionFind)

Action对象通过menu、toolBar调用addAction方法挂接到菜单和toolBar上,挂接后在菜单上就是一个新增的独立菜单项,在toolBar上就是新增的一个toolBar按钮。

2.7、Action的信号

Action与菜单和工具栏挂接后,只是实现了相关的关联关系,但并不能执行响应操作,真正的响应操作是通过Action的信号与对应槽函数连接实现的。

Action提供了4种信号:

  • changed()信号:当修改Action的属性时触发,如修改Action的toolTip信息
  • hovered()信号:当Action关联的菜单项或toolBar在鼠标停留在其上,或者按下了Action的快捷键时触发
  • toggled(bool checked)信号:当Action设置了checkable属性时,关联的菜单项或toolBar在点击后会改变选中状态,此时触发toggled信号,参数为是否选中的最新状态
  • triggered(bool checked = false)信号:当Action关联的菜单项或toolBar在鼠标点击或快捷键按下时触发,也可以通过调用action对象的trigger方法触发。

以上四个Action的信号,一般情况下执行菜单、工具栏按钮以及快捷菜单的响应操作时,使用triggered(bool checked = false)信号连接槽函数来执行。

2.8、Action的信号连接槽函数的方法

Action的信号连接槽函数不能通过Designer的edit菜单的信号编辑进行编辑,不能在界面上通过连接线方式设定信号和槽的连接,只能在Designer右边的信号与槽编辑器中直接编辑,如图:
在这里插入图片描述
点击上图中蓝色圈标记的加号,新加一条信号槽函数记录,如图:
在这里插入图片描述
双击记录中每个字段对每个字段进行编辑,编辑后的结果如下图案例:
在这里插入图片描述
注意信号一般选择triggered,slot选择一个系统具有的或通过信号和槽编辑已经增加的槽函数都可以。

三、菜单

菜单由menu bar菜单栏和menu菜单两部分构成,分别对应类QMenuBar和QMenu。

menuBar是包含一系列下拉菜单项组成,menu包含两种,一种是直接对应Action的,一种是父菜单,下面的子菜单对应Action,在此称对应了Action的菜单为菜单项(这个称呼可能与菜单项的标准说法不一致)。

3.1、菜单栏及菜单的界面定义操作

在Qt Designer中,如果主窗口无菜单通过在主窗口中鼠标右键的弹出菜单可以给主窗口创建菜单栏,如图:
在这里插入图片描述
如果已经创建菜单栏,通过鼠标右键点击菜单条的弹出菜单可以删除菜单,如图:
在这里插入图片描述
菜单栏创建后,就可以通过直接鼠标点击菜单栏后通过键盘输入菜单名回车后创建菜单,并用同样的方法创建子菜单。

菜单的创建还有一种方法就是直接拖拽Action到菜单中,就会直接生成菜单项。

3.2、菜单QMenu的信号

菜单除了通过Action的信号连接槽函数外,也可以通过菜单自身的信号连接槽函数,只是菜单自身的信号不是基于菜单项的,而是基于菜单项的父菜单QMenu类的。有如下信号:

  • aboutToHide()信号:当菜单隐藏前触发
  • aboutToShow()信号:当菜单展示前触发
  • hovered(QAction *action)信号:鼠标停留在菜单项上面时触发
  • triggered(QAction *action)信号:当菜单项对应的Action被触发时触发。

以上4个信号经老猿验证,在Qt Designer中设计好信号和槽函数连接后,通过PyUIC生成的代码并没有建立连接的代码。只有自己在派生类的构造方法中增加建立信号和槽函数连接的代码才可以。以下是老猿在派生类的构造方法添加的QMenu信号和槽函数连接的代码案例:

		self.menusystem.triggered['QAction*'].connect(self.menuSystemTrigger)
        self.menusystem.aboutToHide.connect(self.menuHide)
        self.menusystem.aboutToShow.connect(self.menuShow)
        QtCore.QMetaObject.connectSlotsByName(self)

3.3、菜单栏QMenuBar的信号

QMenuBar菜单栏主要有2个信号:

  • hovered((QAction *action)信号:当鼠标悬停在任何一个菜单栏下的菜单项关联的Action对应的菜单项或工具栏按钮时触发,触发时先触发各Action的hovered()信号,再触发QMenuBar的hovered()信号
  • triggered(QAction *action)信号:菜单下面的任何一个菜单项(即Action)被触发时触发,请参考Action的triggered()信号。

以上两个信号在Action和menu中都存在,使用菜单栏的信号来触发这种情况,一般是在开发者不想将槽函数对应到每个菜单项而是对应到父菜单时使用,但这样在槽函数中就需要判断具体是哪个菜单项被触发。

以上二个信号可以在Qt Designer中直接进行槽函数连接并使用PyUIC生成代码。

四、toolBar工具栏

前面已经介绍toolBar工具栏上的按钮是通过拖动Action到toolBar上创建的,这样通过点击按钮就能与操作菜单一样的效果。

4.1、toolBar的界面定义操作

在Qt Designer中,如果主窗口无toolBar通过在主窗口中鼠标右键的弹出菜单可以给主窗口创建toolBar工具栏,如图:
在这里插入图片描述

已经创建的toolBar可以通过在toolBar上点击鼠标右键移除,如图:
在这里插入图片描述

4.2、toolBar的属性

4.2.1、movable属性
4.2.1.1、概述

movable属性用来确认toolBar是否可以移动,如果设置为可移动,则toolBar可以在主窗口范围内拖拽移动。

4.2.1.2、访问方法

通过isMovable()、setMovable(bool movable)来读取或设置该属性。

4.2.1.3、相关信号

movableChanged(bool movable)信号:movableChanged信号在工具栏变成可移动或不能移动时触发,如果工具栏可移动,则movable为True,否则为False。

注意:这个信号是在调用setMovable改变工具栏的是否允许移动时触发,不是移动工具栏触发。

4.2.1.4、注意
  • 设置movable属性为True的工具栏,在工具栏前有个可移动标记,如图:

在这里插入图片描述
上图中蓝色标记的部分就是可移动标记,移动时鼠标点击该标记进行拖拽移动,当movable属性为False时无此标记。

  • 可移动的toolBar在移动时会缩小到合适的大小,在进入toolBar的allowedAreas范围内时将自动显示toolBar区域范围,并在鼠标释放后自动在该范围内拉伸。
4.2.2、allowedAreas属性
4.2.2.1、allowedAreas属性功能

allowedAreas属性指定工具栏允许移动的范围,其类型为枚举类Qt.ToolBarAreas,有如下取值:
在这里插入图片描述
以上取值可以同or操作组合使用。

4.2.2.2、访问方法

缺省值为Qt.AllToolBarAreas,可以通过allowedAreas()、setAllowedAreas(Qt.ToolBarAreas areas)来访问或设置该属性。

4.2.2.3、allowedAreas 相关信号

allowedAreasChanged( allowedAreas):当toolBar允许的区域设置发生变更时触发该信号,参数allowedAreas为新的可允许的区域。

4.2.2.4、注意

在floatable属性为True的情况下:

  • 只要工具栏设置成可移动的,则无论allowedAreas设置何值都可以移动,但只有在进入toolBar的allowedAreas范围内时将才会自动显示toolBar区域范围,并在鼠标释放后自动在该范围内拉伸附着,否则将保持最适合的大小浮动在窗口之上
  • toolBar初始位置不受allowedAreas影响,allowedAreas仅在移动时才有效。如果初始位置不是allowedAreas指定范围之内,则未移动前工具栏保持在初始位置,但一旦移动就受allowedAreas限制,此种情况下不能再回到初始位置。

在floatable属性为False的情况下:

  • 只要工具栏设置成可移动的,则无论allowedAreas设置何值都可以移动,但只有在进入toolBar的allowedAreas范围内时将才会自动显示toolBar区域范围,并在鼠标释放后自动在该范围内拉伸附着,否则将回到其初始位置
  • toolBar初始位置不受allowedAreas影响,allowedAreas仅在移动时才有效。如果初始位置不是allowedAreas指定范围之内,则未移动前工具栏保持在初始位置,一旦移动就受allowedAreas限制,如果当前位置不是allowedAreas指定区域,此时释放鼠标按钮将回到初始位置。
4.2.3、orientation属性

orientation属性用于确认工具栏是水平方向还是垂直方向,这个属性对于QMainWindow中的工具栏来说没有意义,因为QMainWindow中的工具栏支持在上下左右四个方向摆放。

orientation属性缺省是水平方向(Qt.Horizontal,值为0x1),可以使用orientation()、setOrientation(Qt.Orientation orientation)来访问,垂直方向的为Qt.Vertical,值为0x2。

当toolBar的orientation设置改变时,会触发orientationChanged(Qt.Orientation orientation)信号。

4.2.4、iconSize属性

iconSize属性表示工具栏中图标的大小。默认大小由应用程序的样式决定,并从QStyle.PM_ToolBarIconSize 定义的像素大小继承。这是一个图标可以拥有的最大尺寸,比这更小的图标将不会放大。

可以使用iconSize()、setIconSize(QSize iconSize)来访问此属性。

iconSizeChanged(QSize &iconSize) 是改变此属性的值是工具栏发出的信号。

4.2.5、toolButtonStyle属性

tooButtonStyle属性保存主工具栏按钮的样式设置,用来表示工具栏按钮的文字和图标怎么显示。

该属性的可设置值类型为枚举类型Qt.ToolButtonStyle,它包含如下值:
在这里插入图片描述

该属性的缺省值为Qt.ToolButtonIconOnly,可以使用toolButtonStyle() 来访问工具栏该属性的设置,使用setToolButtonStyle(Qt.ToolButtonStyle )来设置此属性。

toolButtonStyleChanged(Qt.ToolButtonStyle toolButtonStyle)是变更此属性时工具栏发出的信号。

注意:

此属性与主窗口的toolButtonStyle属性同名且设置值及含义完全一样。在主窗口设置了toolButtonStyle属性的情况下,新加工具栏的toolButtonStyle属性默认就是主窗口的toolButtonStyle属性,但当工具栏的toolButtonStyle属性改变之后,主窗口的工具栏的toolButtonStyle属性就不对工具栏的工具栏的toolButtonStyle属性产生作用。因此,主窗口的toolButtonStyle属性值是主窗口内新建工具栏默认的toolButtonStyle属性值。

4.2.6、floatable属性

floatable属性用于保存工具栏是否可以作为独立小窗口拖放,其类型为bool类型,默认值为True,表示工具栏可以漂作为独立窗口拖放。

下图是漂浮在窗口上的工具栏案例:
在这里插入图片描述
可以通过isFloatable()()、setFloatable(bool)来访问和设置该属性。

五、小结

本节详细介绍了主窗口对象相关的菜单、toolBar相关的属性和信号,并介绍了与二者紧密关联的Action的功能、操作设置方法,有了这些东西就能完成一个主窗口应用的基本框架功能了。

老猿Python,跟老猿学Python!

博文目录

博客地址

PyQt6中的菜单栏和工具栏 PYQT6 阅读详情

相关推荐

Python GUI开发进阶:从Tkinter定制到PyQt5实战,打造现代桌面应用

图形用户界面(GUI)是连接用户与软件功能的重要桥梁,其核心在于通过视觉元素和交互逻辑提供直观的操作体验。在Python生态中,Tkinter作为标准库提供了基础的GUI构建能力,而PyQt5等第三方库则凭借其丰富的控件和强大的渲染引擎,实现了更专业、更现代的界面表现。掌握GUI开发不仅能提升脚本的易用性,更是构建独立桌面应用、数据可视化工具及跨平台解决方案的关键技术。通过样式定制、布局管理和事件驱动编程,开发者可以高效实现从基础工具到商业级软件的界面需求。本文聚焦于**Tkinter深度定制**与**Py

weixin_34112181的博客 290

QMenuBar和QACtion的使用

addAction是执行一个动作,但是addAction后面不能执行addMenu了。如果 不使用 返回值 向后继续addMenu()创建菜单项的话,就是横向添加的。菜单栏:使用QMenuBar类管理,管理菜单栏中的菜单或者执行动作。2.4 练习:试着模拟记事本的菜单栏的搭建。工作区:使用QDockWidget类管理。状态栏:使用QStatusBar类管理。工具栏:使用QToolBar类管理。执行动作:QAction类管理。菜单项:QMenu类管理菜单项。1)向菜单栏中添加菜单,2.3.1执行动作的信号。

m0_65554471的博客 1884

深入解析 PyQt 中 Qt Designer 的 toolBar 和 toolButtonStyle 属性

Qt Designer 是 Qt 框架的一部分,它允许开发者以可视化方式创建用户界面。你可以通过拖放、调整大小和设置属性来构建应用程序的界面。一旦你创建了界面,你可以将其保存为.ui文件,然后使用 PyQt 将其加载到你的应用程序中。

目标检测专栏持续更新中,改进YOLO系列通用,适用v5、v7、v8、所有博客均是团队原创博客,所有文章禁止转载,违者必究。 670

PyQt5:菜单和工具栏

右键菜单也叫弹出框,在应用中鼠标右键出现,是在某些场合下显示的一组命令。例如,Opera浏览器里,网页上的右键菜单里会有刷新,返回或者查看页面源代码。如果在工具栏上右键,会得到一个不同的用来管理工具栏的菜单。第三行,创建了一个状态栏,当鼠标悬停在菜单栏的时候,能显示当前状态。菜单栏是非常常用的。是一组命令的集合(Mac OS下状态栏的显示不一样,为得到最相似的外观,我们可以增加一行语句。提供了主窗口的功能,使用它能创建一些简单的状态栏、工具栏和菜单栏。菜单栏包含了所有的命令,工具栏就是常用的命令的集合。

许浑的博客 2119

海洋与地质地理信息数据下载网站汇总集锦

各种海洋与地质地理信息数据集合

qq_36980284的博客 1268

单细胞RNA测序数据分析与可视化:从基础原理到高级应用

单细胞RNA测序(scRNA-seq)技术通过解析单个细胞的基因表达谱,显著提升了我们对细胞异质性的理解。本文详细介绍了scRNA-seq数据分析的完整流程,包括数据预处理、质量控制、降维、聚类、差异表达分析、细胞类型注释、细胞周期分析、轨迹分析、RNA速率分析、基因集富集分析、细胞通讯分析、批次效应校正以及空间转录组学整合。文章还展示了scrna_toolkit包在简化分析流程和增强数据可视化方面的应用。通过这一工具,研究者可以更高效地处理单细胞数据,揭示复杂的生物学信息。未来,该工具将进一步整合多组学分

2301_80338712的博客 4130

python qtdesigner图标按键_第15.15节 PyQt(Python+Qt)入门学习:Designer的menu菜单、toolBar工具栏和Action动作详解...

一、引言Qt Designer中的部件栏并没有菜单、toolBar以及Action相关的部件,仅在MainWindow类型窗口提供了menu、toolBar相关的功能,Action可以在右侧的Action Editor中编辑,如图:如果没有出现Action Editor,可以通过鼠标右键的弹出菜单将其打开,如图:二、Action2.1、功能Action是Qt中单独引入的一个对象,对应QAction...

weixin_39986466的博客 1140

C++利用spdlog生成日志

C++利用spdlog生成日志下载编译spdlog配置并使用 环境:Win10-x64+VS2015 spdlog是一个快速的C++日志库,能够兼容C++11,具备快速、无需依赖第三方库、支持多线程、多平台的优良特性! 下载编译spdlog 1.第一步,下载spdlog 下载spdlog,下载地址:https://github.com/gabime/spdlog#header-only-version,从Github上下载zip压缩包。下载完成后会获取一个名为spdlog-1.x.zip的压缩包 2.第二步

weixin_42975610的博客 3222

Qt开发入门:从零到跨平台GUI低手

Qt开发入门:从零到跨平台GUI低手

Yusei_0523的博客 553

Android13 AudioFlinger混音流程全解析:从prepareTracks_l到threadLoop_write的底层实现

本文深入解析Android13 AudioFlinger混音流程,从prepareTracks_l到threadLoop_write的底层实现。详细剖析MixerThread的核心工作循环,包括音轨预处理、混音算法执行及硬件写入机制,帮助开发者优化音频性能并处理多音轨场景。

tea88的博客 1130

把雷达强度特征融合于 Cartographer的实现流程 :从地图构建到在线定位

摘要:本文提出在激光SLAM中融合强度特征的方法,解决几何匹配在退化环境中的失效问题。详细介绍了两种高反地图生成方式:离线使用assets_writer工具处理优化轨迹,在线实时累积高反点;以及权重网格的构建与预计算金字塔方法。定位阶段通过加权得分公式融合几何和强度信息,采用自适应缩放策略平衡特征依赖。该方案在不显著增加计算负担的前提下,有效提升了对称环境等退化场景的定位稳定性,对利用人工路标的移动机器人具有实用价值。

Studying…… 1328

PyQt5桌面应用开发实战:浏览器多开软件列表显示设置功能实现

在桌面应用开发中,数据展示与用户交互是核心环节。通过模型-视图-控制器(MVC)架构,开发者可以将数据逻辑与界面呈现分离,实现灵活可控的界面管理。其技术价值在于提升应用的专业性和用户体验,尤其在需要管理大量并行任务或数据条目的场景下,如自动化测试、多账号操作或系统监控工具。本文以Python PyQt5框架为基础,结合数据绑定与JSON配置持久化,详细解析了如何为自制浏览器多开软件实现可自定义的列表显示设置功能,涵盖列定义、排序规则与视图样式的动态配置,为构建可配置化GUI应用提供了完整的实战方案。

weixin_30751947的博客 377

AFL源码分析之afl-as.c详细注释

前言 afl-as注释好了,明白了是如何进行插桩的,以及插在哪里 本文主要参考Sakura大佬文章:https://eternalsakura13.com/2020/08/23/afl/ 编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ /* Copyright 2013 Google LLC All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); y

hollk’s blog 2172

QT QMenuBra QMenu QAction 菜单栏 操作详解

本文详细的介绍了QMenuBra QMenu QAction 菜单栏的各种操作,例如操作:新建界面、加入菜单项、加入子菜单、新建二级子菜单、QAction分隔符、pMenuBar、点击信号、触发信号、设置图标、设置禁用、设置提示语 等操作

断点 8511

OpenLayers6入门,快速搭建Vue+OpenLayers地图脚手架项目

本章针对Vue初学者,对Vue不熟悉,甚至还不会Vue的入门学生读者。本章会详细讲解从环境到环境的各个步骤,再到使用脚手架快速生成项目,以及添加地图库依赖,编写简单的高德地图显示页面的。如果已有VUE项目或者熟悉VUE的读者可以不用看本章,直接添加ol依赖到VUE项目中即可。

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 5440

《FPGA DDR3权威实战:从基础到高速故障录波系统》专栏导览:从不知所措到心中有数

本文是一份DDR3实战指南,作者从自身学习经历出发,分享了一套循序渐进的DDR3应用路线图。专栏包含12篇文章,从基础配置(MIG IP核、AXI总线)、仿真测试到实际项目应用(功能测试、性能测试),最后深入原生MIG接口实战,通过一个高速故障录播系统案例完整展示DDR3开发流程。文章特别强调实践性,旨在帮助读者系统掌握DDR3开发技能,避免作者当年踩过的坑。每篇都配有优快云链接,适合FPGA开发者按顺序学习参考。

FPGA_小田老师的博客 331

Qt designer-菜单栏与工具栏

一级菜单的添加 创建窗口,选择MainWindow 点击Type here,添加选项卡与快捷键注意编辑快捷键时使用&,例如菜单(&F),编辑完毕后,必须按下回车来确认 工具栏,与二级菜单编辑 二者都要现在右下角的Action Editor中编辑 使用new添加(shortcut为快捷键) 编辑完成后 如果添加工具栏直接鼠标左键单击,选择Add Tool Bar,将编辑好的...

weixin_44677658的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

qt中的菜单QMenu QAction

传送门: qt中的菜单QMenu QAction Qt中要建立菜单,有三个类很重要: [cpp] view plain copy QMenuBar(QWidget * parent = 0)   QMenu(QWidget * parent = 0)    QMenu(const QString & title, Q

天道酬勤 6081

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【Qt】遍历菜单下的动作action

遍历菜单下的动作action

lieam的博客 2175

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

四、Qt Creator添加菜单图标

在下面的几节,我们讲述Qt的MainWindow主窗口部件。这一节只讲述怎样在其上的菜单栏里添加菜单和图标。1.新建Qt4 Gui Application工程,将工程命名为MainWindow,其他选项默认即可。生成的窗口界面如下图。其中最上面的为菜单栏。2.我们在Type Here那里双击,并输入“文件(&F)”,这样便可将其文件菜单的快捷键设为Alt+F。(注意括号最好用英文半

紫侠的天空 2021

PyQt(Python+Qt)学习随笔:Qt Designer中的menu菜单及menu bar菜单栏

菜单由menu bar菜单栏和menu菜单两部分构成,分别对应类QMenuBar和QMenu。 menuBar是包含一系列下拉菜单项组成,menu包含两种,一种是直接对应Action的,一种是父菜单,下面的子菜单对应Action,在此称对应了Action的菜单为菜单项(这个称呼可能与菜单项的标准说法不一致)。 1、菜单栏及菜单的界面定义操作 在Qt Designer中,如果主窗口无菜单通过在主窗口...

老猿Python 5099

python pyqt5 QToolBar工具栏应用

QToolBar控件是由文本按钮、图标或其他小控件按钮组成的可移动面板,通常位于菜单栏下方。每当单击工具栏中的按钮时,都将发射actionTriggered信号。QToolBar工具栏作用。QToolBar常用方法。

cy19890616的博客 582

QT Qmenu 里面添加的ACtion,每点击一次QAction图标出现和消失一次

大概说标题所说,使用connect连接,下面是效果图 点击一次编辑后,图标应该消失: 下面是代码: QMenu *menu = new QMenu("tabShowMenu1", this); menu->setIcon(QIcon(":/icon/icon/inRangDataRemove.png")); QAction *act=menu->addAction(QIcon(":/icon/icon/Hook.png"),"test"); connect(a

a_1_1_1_2的博客 2595

PyQt5最全35 工具栏之addToolBar创建和使用工具栏

PyQt5最全35 工具栏之addToolBar创建和使用工具栏 import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * class Toolbar(QMainWindow): """ 创建和使用工具栏 addToolBar 工具栏默认按钮:只显示图标,将文本作为悬停提示展示 工具栏按钮有三种显示状态:1.只显示图标 2.只显示文本

爱吃肉的牛牛的博客 3629

【PyQt】PyQt工具栏

对于其他位置(底部、左侧、右侧),则需要使用 self.addToolBar(area, toolbar) 形式的方法调用,其中 area 是 Qt.BottomToolBarArea, Qt.LeftToolBarArea, 或 Qt.RightToolBarArea 等预定义的区域常量。在 PyQt 中创建工具栏主要涉及 QMainWindow、QToolBar 和 QAction 类。

weixin_59422604的博客 556

使用Qt designer 向菜单栏和工具栏添加action

在使用Qt创建桌面程序的时候,经常会使用Qt designer来设计程序界面。 而Qt窗口类中,QMenuBar和QToolBar中并没有按钮或选项类的控件,取而代之的是要向这些控件中添加QAction。这一个个Action构成了类似按钮似的“控件”。 网上很多在源代码中添加QAction的方法。实际上,在Qt designer中也可以方便的想菜单栏和工具栏添加action。 方法如下:

donyac的专栏 4万+
上一篇: PyQt(Python+Qt)学习随笔:Qt Designer中toolBar的floatable属性
下一篇: PyQt(Python+Qt)入门:设计师中部件toolTip、statusTip、whatsThis的属性
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值