知识回顾:

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

长按关注公众号

相关文章:

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

  1. python menu实例_Python高级进阶#019 pyqt5菜单menu应用,新建多窗体

    知识回顾: 1.掌握的是QCalendarWidget日历控件 2.click点击事件(信号)触发 3.掌握日期的格式化QDate 本节知识视频教程 以下开始文字讲解: 一.案例:菜单 1.新建第一个 ...

  2. python高级教程_Python高级进阶教程

    这个系列的教程是在刘金玉编程的<零基础python教程>基础上的高级进阶应用. 教程列表: Python高级进阶教程001期 pycharm+anaconda3+pyqt5可视化界面开发环 ...

  3. python可以做什么开发-python适合做什么开发_python未来发展怎么样

    python概述 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年.Python是纯粹的自由软件, 源代 ...

  4. python最适合做什么-python适合做什么开发_python未来发展怎么样

    python概述 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年.Python是纯粹的自由软件, 源代 ...

  5. python全栈测试开发_python全栈的基础知识

    python全栈是什么意思 即从前端页面的实现,到后台代码的编写,再到数据库的管理,一人可以搞定一个公司网站的所有事情,真正实现全栈开发. 全栈只是个概念,也分很多种类真正的全栈工程师涵盖了web开发 ...

  6. python中与label类似的控件是_Python高级进阶教程021期 pyqt5label控件进阶使用,设置兄弟控件,广告植入...

    知识回顾 1.掌握综合应用登录窗体 2.掌握密码设置setEchoMode 本节知识视频教程 以下开始文字讲解: 1.本节案例:快捷定位 1.把label控件上面的快捷键绑定到指定的另一个兄弟控件上 ...

  7. python模拟登录吃鸡_Python高级爬虫开发,高难度JS解密教程,绝地求生模拟登陆!...

    前言 这篇文章因为涉及到JS解密部分,所以难度比较高,Python基础比较薄弱的同学可以来看看思路. 开始 进入到该网站后我们可以看到如下界面,今天要做的内容就是模拟登陆 那么咱们首先抓到登陆的包看看 ...

  8. python框架django入门_Python高级进阶(一)Python框架之Django入门

    姓名:{{name}} 爱好: {% for hobby in hobby_list %} {{hobby}}{% endfor %}

  9. python运维系统开发_Python系统运维开发实战

    课程主题: Python 高级运维开发实战 课程讲师: Alex 老师, triaquae python 开源运维管理软件创始人,知名 IT 公司运维开发架构师 课程安排: 每周六一天全天(早 9:0 ...

最新文章

  1. 创建 Pool VIP - 每天5分钟玩转 OpenStack(122)
  2. phpcms忘记管理员密码和访问错误等常见问题
  3. 机器学习导论(张志华):主元分析
  4. MVC 3.0 在各个版本IIS中的部署
  5. spark与storm的对比
  6. mysql MHA 集群搭建
  7. SSM框架之多数据源配置
  8. 使用Duilib做的程序封装成DLL的显示加载与卸载问题
  9. kubernetes 核心组件的运行机制
  10. 不同格式导入EndNote方法总结
  11. 快速入门机器学习——特征抽取
  12. 网页导出pdf不完整_怎么把pdf文件导出为图片?支持导出什么图片格式?
  13. 摘自一博主的牛逼面试总结 !!! 五颗星(阿里(分享面试过程))
  14. CR 与 LF 换行符
  15. 软件实施是一个什么样的职位?
  16. 30年时间让科技与人对话,什么是机器人语音识别原理
  17. 7-33 删除句子中的单词 (8 分)输入n(n<=10)个由若干个单词组成的英文句子(句子的长度不超过100),每个句子以英文的标点“.”结束,每个句子中单词之间由1个空格进行分隔,如果最后一个单
  18. 上周热点回顾(3.19-3.25)
  19. 价值十个亿的淘宝搜索功能
  20. AMD的GPU拿来跑深度学习,Rocm3.0Pytorch@Ubuntu16 编译记录

热门文章

  1. Matlab找矩阵中最大最小值的位置
  2. 人工智能AI实战100讲(二十)-先拍照后对焦,基于深度估计的景深编辑与背景虚化
  3. 隐马尔科夫模型原理解析
  4. Python办公自动化,对文件进行自由操作
  5. c语言打砖块游戏代码,打砖块游戏的源代码(请多指教)
  6. linux命令画圣诞树图片,以 Linux 的方式庆祝圣诞节
  7. zblog php 侧边栏样式,ZBlogPHP免费主题Blogs如何修改侧边栏搜索框样式?
  8. JSON 使用 教程
  9. 多路复用IO和异步IO
  10. border,padding,margin盒模型理解