python面向窗体的开发_Python高级进阶#019 pyqt5菜单menu应用,新建多窗体

知识回顾:

1.掌握的是QCalendarWidget日历控件

2.click点击事件(信号)触发

3.掌握日期的格式化QDate

本节知识视频教程

以下开始文字讲解:

一、案例:菜单

1.新建第一个窗体

2.一级菜单的配置

3.二级菜单的配置

4.利用菜单功能实现界面跳转,实现一个多窗体的打开

5.利用菜单功能实现温馨提示

效果图

二、开发思路

1.导入类QMainWindow。

2.使用Qmenu菜单类,这个菜单我们可以从窗体本身的方法进行获取。

3.利用Qmenu的功能,来实现多级菜单addAtion这是一个直接产生点击事件的行为;也可以用addMenu功能来增加子菜单。

4.每次都要弹出新窗体,这个新窗体,我们要制作成全局的窗体。

5.使用Qmessagebox来实现一个简单的帮助。

三、开发过程要点

这里的简便方法在哪里?

本例就是运用了QMainWindow本身功能的继承

载入菜单的简单功能

#利用窗体本身有的菜单栏功能进行载入

mymenu=self.menuBar()

mymenu.addAction(“新建”)    这里是要新建一个菜单按钮功能

mymenu.addAction("运行")

mymenu.addAction("调试")

mymenu.addAction("帮助")

菜单按钮行为的触发要点

actHelp=QAction("帮助",self)

利用Qaction的triggered信号实现菜单按钮的功能。这个信号也称为“触发”

actHelp.triggered.connect(self.ljyHelp)

mymenu.addAction(actHelp)

帮助按钮的显示内容,通过消息框进行提示。

msgbox=QMessageBox(QMessageBox.Information,"帮助","欢迎加老刘微信selidev交流",QMessageBox.Ok,self)

msgbox.show()  这里千万不要忘记show出来

子菜单的书写

这里要注意,直接将子菜单写在父级菜单的下方。

这样的好处,更多的也可以帮助我们进行二次理解。

子菜单的添加,通过addMenu功能

mymenu=self.menuBar()

mymenu.addMenu("文件")

子菜单的核心代码

这里要注意,子菜单的写法,是一级一级下来的,并且每一级的书写,都有一个范围对象。

mymenu=self.menuBar()  总菜单栏的返回对象

fileMenu=mymenu.addMenu(“文件”)    文件菜单的返回对象

fileMenu.addAction("新建")

recentFiles=fileMenu.addMenu(“最新的..”)   最新的…菜单项的返回对象

recentFiles.addAction("文件1")

recentFiles.addAction("文件2")

recentFiles.addAction("文件3")

对于新窗体的建议

建议一个窗体就写一个类。那么每一次新的窗体出现的时候,就是实例化这个类。

注意:想要让这个窗体被一直死循环监听,必须要把这个窗体作为程序的全局变量。否则就会出现闪退现象。

新建一个窗体的写法

1.直接写一个自定义的类窗体

2.将这个类窗体先不要show

3.将这个类窗体在main中进行实例化,作为全局变量

4.在槽的行为中,将这个窗体show出来。

新建多个窗体

1.这里的思想要实例化多个窗体,且这些窗体都是全局变量

2.这里我们要考虑使用列表作为全局变量来承载这些窗体对象

3.此时,我们需要在自定义的类中书写show的代码

四、总结强调

1.掌握菜单栏的书写

2.掌握菜单按钮的单击行为跳转功能

3.掌握子菜单的建立

4.掌握多窗体的书写注意点

本节教程源代码:

import sysfrom PyQt5.QtWidgets import QApplication,QWidget,QMainWindow,QAction,QMessageBoxclass MyClass(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("刘金玉编程")self.setGeometry(300,100,400,300)#制作菜单#利用窗体本身有的菜单栏功能进行载入mymenu=self.menuBar()fileMenu=mymenu.addMenu("文件")actNewWin=QAction("新建窗体",self)actNewWin.triggered.connect(self.myNewWin)fileMenu.addAction(actNewWin)recentFiles=fileMenu.addMenu("最新的..")recentFiles.addAction("文件1")recentFiles.addAction("文件2")recentFiles.addAction("文件3")mymenu.addAction("运行")mymenu.addAction("调试")actHelp=QAction("帮助",self)actHelp.triggered.connect(self.ljyHelp)mymenu.addAction(actHelp)self.show()def myNewWin(self):list1.append(MyClass2())def ljyHelp(self):msgbox=QMessageBox(QMessageBox.Information,"帮助","欢迎加老刘微信selidev交流",QMessageBox.Ok,self)msgbox.show()class MyClass2(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("编程创造城市http://bcczcs.com")self.show()if __name__=="__main__":app=QApplication(sys.argv)mc=MyClass()list1=[]app.exec_()

长按关注公众号

相关文章:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用方面清理代码

在我以前的文章中,我描述了字母转换,并且提到了我们使用AspectJ解决了该任务,但是我没有提及AspectJ的工作原理以及一般性的方面。 因此,在接下来的几行中,我将解释: 什么是面向方面的编程,为什…

java前三章总结

Java前三章总结 第一章:1.Java都有什么东西? Jdk(java开发工具包)包括 Jre(Java运行环境)---------->jvm(Java虚拟机) 应用(javac) Java API和一些常用的j…

原型 - 实现自己的jQuery

每个第一次使用jq的开发者都感到惊叹,jq的$太神奇了,究竟是怎么做到的使用$控制dom 赞叹前人之余,探究其本源才是前端开发者应该做的事,社区常常说,不要重复造轮子, 可是啊,连轮子都造不出来,又怎么去了解在什么环境下用什么轮子,怎么样才可以造成更加优秀的轮子, 不同阶段对…

html 用svg缩放拉伸,html – 拉伸SVG以适应其父级的100%高度和宽度

如果您对另一种选择开放,您可以使用纯CSS创建形状.它不会像SVG那样整洁,但它会响应:* {box-sizing:border-box;}.box {margin:40px;padding:0 10px;max-width:200px;display:inline-block;vertical-align:top;border-right:2px solid green;border-left:2px solid g…

server.transfer 无法跳转页面_H5 腾讯地图无法导航

uni-app 打包H5腾讯地图无法导航前言:最近几天用uni-app开发安卓和iOS应用,打包成APP安装包后,APP内做地图导航没有问题,APP内使用的是高德地图;但是打包成为H5页面后,运行在微信内置浏览器或者运行在第三方…

打破PermGen神话

在我的最新文章中,我解释了可能导致java.lang.OutOfMemoryError:PermGen空间崩溃的原因 。 现在该讨论该问题的可能解决方案了。 或者,更确切地说,是关于互联网对可能解决方案的建议。 不幸的是,我只能说,我…

Linux获取当前年月日后缀精确到微秒,例如2017-05-06T23:57:07.713171

代码如下&#xff1a;详细见注释 #include <stdio.h> #include <string.h> #include <time.h> #include <sys/time.h>int main() {struct timeval start;struct tm *local_time NULL;static char str_time[100];char ms[16];gettimeofday( &start…

PhiloGL学习(5)——神说要有光,便有了光

前言 上一篇文章中介绍了如何创建三维对象及加载皮肤&#xff0c;本文为大家介绍如何为场景添加光源。 一、 原理分析 光在任何地方都是非常重要的&#xff0c;无论在哪里都说是要发光发热&#xff0c;光和热也是分不开的。光线分为点光源和线光源&#xff0c;所谓点光源和线光…

android 弹出弹框2秒消失_基于HTML5 Canvas 实现弹出框

前言用户鼠标移入时&#xff0c;有弹出框出现&#xff0c;这样的需求很常见。这在处理 HTML 元素实现时简单&#xff0c;但是如果是对 HTML5 Canvas 构成的图形进行处理&#xff0c;这种方法不再适用&#xff0c;因为 Canvas 使用的是另外一套机制&#xff0c;无论在 Canvas 上…

【CSS】小妙招,各种问题总结方法处理

1.实现div文字溢出自动省略号截取 overflow:hidden; /*超过部分不显示*/       text-overflow:ellipsis; /*超过部分用点点表示*/       white-space:nowrap;/*不换行*/ 2.规定行数的截取效果 text-overflow: ellipsis; /*有些示例里需要定义该属性&#xff0c…

Java2Days 2012:Java EE

Java2Days会议是东欧的主要活动&#xff0c;目的是介绍Java开发的最新趋势。 今年&#xff0c;该活动于10月25日至26日在保加利亚的索非亚举行。 我在那里&#xff0c;并有机会与一些SAP的同事一起品尝了一些最新的Java&#xff0c;云和移动内容&#xff0c;这些内容已直接发送…

html5布局总结,HTML5网页布局的总结

可以通过 和 将 html 元素组合起来。html 块元素大多数 html 元素被定义为块级元素或内联元素。编者注&#xff1a;“块级元素”译为 block level element&#xff0c;“内联元素”译为 inline element。块级元素在显示时&#xff0c;通常会以新行来开始(和结束)。例子&#x…

c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构

前言上一章节针对于C语言栈结构做了解析&#xff0c;不清楚的可以回顾一下。本章节主要针对于C语言的基础数据结构队列做以解析。数据结构之队列队列是一种特殊的 线性表 &#xff0c;特殊之处在于它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在…

bit-map再显身手:test.txt中有42亿个无符号整数, 求不存在于test.txt中的最小无符号整数。限制: 可用内存为600MB....

先看看这个题目&#xff1a;test.txt中有42亿个无符号整数&#xff0c; 求不存在于test.txt中的最小无符号整数. 限制&#xff1a; 可用内存为600MB. 又是大数据。 看到42亿&#xff0c; 有灵感没&#xff1f; 要知道&#xff0c; 2的32次方就是42亿多一点点啊。42亿个无符号…

周期均方根和有效值的区别_黑猪肉和白猪肉有啥区别?

为啥散养黑猪肉的价格要比白猪贵很多?这其中的原因不看不知道!市面上的散养黑猪肉通常要比白猪肉贵很多&#xff0c;但是仍有不少人喜欢买黑猪肉回家吃&#xff0c;散养黑猪肉和白猪肉不仅仅是口感上有所差距&#xff0c;其价值差距体现在很多方面&#xff0c;接下来小编就和大…

BZOJ1734: [Usaco2005 Feb]Aggressive cows 愤怒的牛

【传送门&#xff1a;BZOJ1734】 简要题意&#xff1a; 约翰有N 间牛棚&#xff0c;这些牛棚坐落在一条直线上&#xff0c;第i 间牛棚位于坐标Xi 的位置。他要把C 头 奶牛安排在这些牛棚里。每间牛棚最多可以放一头奶牛&#xff0c;也可以空着。这些奶牛的脾气都很暴燥&#xf…

CSS基础范例

1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>Title</title>6 <style>7 *{8 margin: 0; /*重置*/9 padding: 0…

测试环境搭建流程_前端构建 DevOps 搭建 DevOps 基础平台(中)

前言搭建基础平台搭建上篇的时候的时候&#xff0c;已经介绍过了项目流程设计、数据库搭建、jwt 登录等模块。此篇我们介绍分支管理设计及其他的基础模块。后端模块DevOps - Gitlab Api使用(已完成&#xff0c;点击跳转)DevOps - 搭建 DevOps 基础平台(已完成 50%)基础平台搭建…

什么是PermGen泄漏?

接下来是对Java应用程序中特定类型的内存问题的实用介绍。 即–我们将分析导致java.lang.OutOfMemoryError&#xff1a;PermGen空间的错误 堆栈跟踪中的症状。 首先&#xff0c;我们将介绍理解该主题所需的核心概念&#xff0c;并说明什么是对象&#xff0c;类&#xff0c;类…

html浮动炫酷样式,jQuery和CSS3炫酷表单浮动标签特效

这是一款炫酷的jQuery和CSS3表单浮动标签特效。浮动标签是指输入框中的文字或占位文本在输入框聚焦的时候&#xff0c;以动画的方式浮动到指定的地方。浮动标签特效是一种新颖时尚的动画特效&#xff0c;不仅效果很酷&#xff0c;而且能以明确的方式提示用户该输入框应该填写上…