python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例


Posted in Python onFebruary 28, 2020

PyQt5菜单栏控件QMenuBar介绍

QMenuBar在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象

QMenuBar类提供了一个可以包含一个或多个QAction对象或 级联的QMenu对象,要创建一个弹出菜单,Pyqt提供了createPopupMenu()函数,menuBar()函数用于返回主窗口的QMenuBar对象:addMenu()函数可以将菜单添加到菜单栏中,通过addAction()函数可以在菜单中进行添加操作

设计菜单系统时常用的一些重要方法

方法 描述
menuBar() 返回主窗口的QMenuBar对象
addMenu() 在菜单栏中添加一个新的QMenu对象
addAction() 向QMenu小控件中添加一个操作按钮,其中包含文本或图标
setEnabled() 将操作按钮设置为启用/禁用
addSeperator() 在菜单中添加一条分割线
clear() 删除菜单栏的内容
setShortcut() 将快捷键关联到操作按钮
setText() 设置菜单项的文本
setTitle() 设置QMenu小控件的标题
text() 返回与QACtion对象关联的文本
title() 返回QMenu小控件的标题

单击任何QAction按钮时,QMenu对象都会发射triggered信号

QMenuBar的使用实例

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class MenuDemo(QMainWindow):
  def __init__(self,parent=None):
    super(MenuDemo, self).__init__(parent)

    #水平布局
    layout=QHBoxLayout()

    #实例化主窗口的QMenuBar对象
    bar=self.menuBar()
    #向菜单栏中添加新的QMenu对象,父菜单
    file=bar.addMenu('File')
    #向QMenu小控件中添加按钮,子菜单
    file.addAction('New')

    #定义响应小控件按钮,并设置快捷键关联到操作按钮,添加到父菜单下
    save=QAction('Save',self)
    save.setShortcut('Ctrl+S')
    file.addAction(save)

    #创建新的子菜单项,并添加孙菜单
    edit=file.addMenu('Edit')
    edit.addAction('Copy')
    edit.addAction('Paste')

    #添加父菜单下
    quit=QAction('Quit',self)
    file.addAction(quit)

    #单击任何Qmenu对象,都会发射信号,绑定槽函数
    file.triggered[QAction].connect(self.processtrigger)

    #设置布局及标题
    self.setLayout(layout)
    self.setWindowTitle('menu例子')

  def processtrigger(self,q):
    #输出那个Qmenu对象被点击
    print(q.text()+'is triggeres')

if __name__ == '__main__':
  app=QApplication(sys.argv)
  demo=MenuDemo()
  demo.show()
  sys.exit(app.exec_())

运行程序,显示效果如图

python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例

QMenuBar代码分析

在这个例子中,顶层窗口必须是QMainWindow对象,才可以引用QMenuBar对象

通过addMenu()方法将‘File'菜单添加到菜单栏

bar=self.menuBar()

    #向菜单栏中添加新的QMenu对象,父菜单

    file=bar.addMenu('File')

菜单栏中的操作按钮可以是字符串或QAction对象

file.addAction('New')
    #定义响应小控件按钮,并设置快捷键关联到操作按钮,添加到父菜单下

    save=QAction('Save',self)
    save.setShortcut('Ctrl+S')
    file.addAction(save)

将子菜单添加到顶级菜单中

edit=file.addMenu('Edit')
    edit.addAction('Copy')
    edit.addAction('Paste')

菜单发射triggered信号,将信号连接到槽函数processtrigger()该函数接受信号的QAction对象

file.triggered[QAction].connect(self.processtrigger)

本文详细讲解了PyQt5菜单栏控件QMenuBar的使用方法与实例,更多关于PyQt5菜单栏控件的使用知识请查看下面的相关链接

Python 相关文章推荐
python利用hook技术破解https的实例代码
Mar 25 Python
使用Python的Supervisor进行进程监控以及自动启动
May 29 Python
python传递参数方式小结
Apr 17 Python
python使用Tkinter显示网络图片的方法
Apr 24 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
python中正则的使用指南
Dec 04 Python
python学生信息管理系统
Mar 13 Python
Django实现全文检索的方法(支持中文)
May 14 Python
python字符串循环左移
Mar 08 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
Python测试模块doctest使用解析
Aug 10 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 #Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 #Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 #Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 #Python
Python 之 Json序列化嵌套类方式
Feb 27 #Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 #Python
You might like
php获取网站百度快照日期的方法
2015/07/29 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
node版本管理工具n包使用教程详解
2018/11/09 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
python实现转圈打印矩阵
2019/03/02 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
解决python replace函数替换无效问题
2020/01/18 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
.net面试题
2016/09/17 面试题
LINUX下线程,GDI类的解释
2016/12/14 面试题
Ajax主要包含了哪些技术
2014/06/12 面试题
实习推荐信
2014/05/10 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
十岁生日答谢词
2015/01/05 职场文书
客服专员岗位职责
2015/02/10 职场文书
Python实现滑雪小游戏
2021/09/25 Python
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript