Python高级进阶#019 pyqt5菜单menu应用,新建多窗体 |
您所在的位置:网站首页 › pyqt5下拉菜单页面 › 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.掌握多窗体的书写注意点 本节教程源代码: 代码语言:javascript复制import sysfrom PyQt5.QtWidgets import QApplication,QWidget,QMainWindow,QAction,QMessageBox class 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_() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |