QT学习之菜单栏与工具栏
QT学习之菜单栏与工具栏
目录
简单菜单栏
多级菜单栏
上下菜单栏
工具栏
简单菜单栏
程序示例
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp
from PyQt5.QtGui import QIcon
import sys
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.InitUI() def InitUI(self):
self.statusBar().showMessage('准备就绪')
self.setGeometry(300,300,400,300)
self.setWindowTitle('简单菜单栏')
exitAct = QAction(QIcon('exit.png'), '退出(&E)', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('退出程序')
exitAct.triggered.connect(qApp.quit)
menubar = self.menuBar()
fileMenu = menubar.addMenu('文件(&F)')
fileMenu.addAction(exitAct) self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
代码解析
设置静态状态栏信息
self.statusBar().showMessage('准备就绪')
QAction是使用菜单栏,工具栏或自定义键盘快捷方式执行操作的抽象。我们创建一个具有特定图标和“退出”标签的动作。
exitAct = QAction(QIcon('exit.png'), '退出(&E)', self)
为此操作定义了快捷方式
exitAct.setShortcut('Ctrl+Q')
当我们将鼠标指针悬停在菜单项上时,“退出程序”会显示在状态栏中。
exitAct.setStatusTip('退出程序')
当我们选择这个特定的动作时,发出触发信号。 信号连接到QApplication小部件的quit()方法。 这终止了应用程序。
exitAct.triggered.connect(qApp.quit)
- menuBar()方法创建一个菜单栏。
- addMenu()创建文件菜单,
- addAction()添加操作
menubar = self.menuBar()
fileMenu = menubar.addMenu('文件(&F)')
fileMenu.addAction(exitAct)
上面的代码中我们在退出、文件后面都增加了“&”这个符号,增加这个符号后,当我们按住“Alt+F”的时候就能快速打开文件这个菜单,同理按住“Alt+E”的时候就能退出了。
演示结果
多级菜单栏
程序示例
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp, QMenu
from PyQt5.QtGui import QIcon
import sys
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.InitUI()
def InitUI(self):
self.statusBar().showMessage('准备就绪') self.setGeometry(300,300,400,300)
self.setWindowTitle('多级菜单') exitAct = QAction(QIcon('exit.png'), '退出(&E)', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('退出程序')
exitAct.triggered.connect(qApp.quit) saveMenu = QMenu('保存方式(&S)', self)
saveAct = QAction(QIcon('save.png'),'保存...', self)
saveAct.setShortcut('Ctrl+S')
saveAct.setStatusTip('保存文件') saveasAct = QAction(QIcon('saveas.png'),'另存为...(&O)', self)
saveasAct.setStatusTip('文件另存为') saveMenu.addAction(saveAct)
saveMenu.addAction(saveasAct) newAct = QAction(QIcon('new.png'),'新建(&N)',self)
newAct.setShortcut('Ctrl+N') menubar = self.menuBar()
fileMenu = menubar.addMenu('文件(&F)')
fileMenu.addAction(newAct)
fileMenu.addMenu(saveMenu)
fileMenu.addSeparator()
fileMenu.addAction(exitAct) self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
代码解析
创建退出菜单
exitAct = QAction(QIcon('exit.png'), '退出(&E)', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('退出程序')
exitAct.triggered.connect(qApp.quit)
使用QMenu创建新菜单“保存方式”
saveMenu = QMenu('保存方式(&S)', self)
创建“保存”
saveAct = QAction(QIcon('save.png'),'保存...', self)
saveAct.setShortcut('Ctrl+S')
saveAct.setStatusTip('保存文件')
创建“另存为”
saveasAct = QAction(QIcon('saveas.png'),'另存为...(&O)', self)
saveasAct.setStatusTip('文件另存为')
将“保存”和“另存为”添加到“保存方式”
saveMenu.addAction(saveAct)
saveMenu.addAction(saveasAct)
创建“新建”
newAct = QAction(QIcon('new.png'),'新建(&N)',self)
newAct.setShortcut('Ctrl+N')
创建菜单栏,并添加主菜单“文件”(一级菜单)
menubar = self.menuBar()
fileMenu = menubar.addMenu('文件(&F)')
添加“新建”、“保存方式”、“退出”三个二级菜单
addSeparator():在菜单中添加横线分隔符号
fileMenu.addAction(newAct)
fileMenu.addMenu(saveMenu)
fileMenu.addSeparator()
fileMenu.addAction(exitAct)
上下菜单栏
程序示例
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp, QMenu
from PyQt5.QtGui import QIcon
import sys class Example(QMainWindow):
def __init__(self):
super().__init__()
self.InitUI() def InitUI(self):
self.statusBar().showMessage('准备就绪')
self.setGeometry(300, 300, 400, 300)
self.setWindowTitle('上下文菜单')
self.show() def contextMenuEvent(self, event):
cmenu = QMenu(self) newAct = cmenu.addAction("新建")
opnAct = cmenu.addAction("保存")
quitAct = cmenu.addAction("退出")
action = cmenu.exec_(self.mapToGlobal(event.pos()))
if action == quitAct:
qApp.quit() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
代码解析
使用上下文菜单,我们必须重新实现contextMenuEvent()方法。
使用exec_()方法显示上下文菜单
mapToGlobal()方法将窗口小部件坐标转换为全局屏幕坐标。
action = cmenu.exec_(self.mapToGlobal(event.pos())) 如果从上下文菜单返回的操作等于退出操作,我们终止应用程序。
这里我们没有对“新建”与“退出”进行操作
if action == quitAct:
qApp.quit()
工具栏
程序示例
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp, QMenu
from PyQt5.QtGui import QIcon
import sys class Example(QMainWindow):
def __init__(self):
super().__init__()
self.InitUI()
def InitUI(self):
self.statusBar().showMessage('准备就绪') self.setGeometry(300,300,400,300)
self.setWindowTitle('工具栏') exitAct = QAction(QIcon('exit.png'), '退出(&E)', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('退出程序')
exitAct.triggered.connect(qApp.quit) saveMenu = QMenu('保存方式(&S)', self)
saveAct = QAction(QIcon('save.png'),'保存...', self)
saveAct.setShortcut('Ctrl+S')
saveAct.setStatusTip('保存文件')
saveasAct = QAction(QIcon('saveas.png'),'另存为...(&O)', self)
saveasAct.setStatusTip('文件另存为')
saveMenu.addAction(saveAct)
saveMenu.addAction(saveasAct) newAct = QAction(QIcon('new.png'),'新建(&N)',self)
newAct.setShortcut('Ctrl+N')
newAct.setStatusTip('新建文件') menubar = self.menuBar()
fileMenu = menubar.addMenu('文件(&F)')
fileMenu.addAction(newAct)
fileMenu.addMenu(saveMenu)
fileMenu.addSeparator()
fileMenu.addAction(exitAct) toolbar = self.addToolBar('工具栏')
toolbar.addAction(newAct)
toolbar.addAction(exitAct) self.show() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
代码解析
工具栏使用addToolBar()方法创建。 我们使用addAction()向工具栏添加两个动作对象。
toolbar = self.addToolBar('工具栏')
toolbar.addAction(newAct)
toolbar.addAction(exitAct)
QT学习之菜单栏与工具栏的更多相关文章
- 【Qt开发】菜单栏,工具栏和状态栏
概述 菜单栏,工具栏,状态栏应用中经常见到,下图解释一目了然,实际开发中 两种方式来实现,一种是使用纯代码QMenuBar,QToolBar,QStatusBar来设计开发,另一种使用Qt Desig ...
- Qt 学习之路 2(12):菜单栏、工具栏和状态栏
Home / Qt 学习之路 2 / Qt 学习之路 2(12):菜单栏.工具栏和状态栏 Qt 学习之路 2(12):菜单栏.工具栏和状态栏 豆子 2012年9月10日 Qt 学习之路 2 2 ...
- Qt 学习之路 :菜单栏、工具栏和状态栏
在之前的<添加动作>一文中,我们已经了解了,Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示.QAction可以添加到菜单上.工具栏上.期间,我们还详细介绍了一 ...
- Python pyQt4/pyQt5 学习笔记2(状态栏、菜单栏和工具栏)
例子:状态栏.菜单栏和工具栏 import sys from PyQt4 import QtGui class Example(QtGui.QMainWindow): def __init__(sel ...
- 【Qt编程】Qt学习之Window and Dialog Widgets
Qt Creator 提供的默认基类只要QMainWindow.QWidget和QDialog三种.其中,QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,这两个 ...
- QT学习教程
原地址:http://www.devbean.NET/2012/08/qt-study-road-2-catelog/ 网上看到的不错的教程 本教程以qt5为主,部分地方会涉及qt4.据说非常适合qt ...
- 三、PyQt5不同方法创建菜单栏、工具栏和状态栏
创建菜单栏.工具栏和状态栏可以直接通过代码实现,也可以通过Qt Designer中的属性编辑器等实现.通过两种方法的学习可以加深理解,更好的掌握PyQt5. 一.菜单栏与状态栏 状态栏的设置比较简单, ...
- QT学习之第一个程序
QT学习之第一个程序 目录 手动创建主窗口 居中显示 添加窗口图标 显示提示文本 Message Box的应用 手动连接信号与槽 手动创建主窗口 窗口类型 QMainWindow: 可以包含菜单栏.工 ...
- Qt 学习之路 2(8):添加动作
Home / Qt 学习之路 2 / Qt 学习之路 2(8):添加动作 [在WINDOWS10 QTCREATOR MENU添加无效] Qt 学习之路 2(8):添加动作 豆子 ...
随机推荐
- 利用 python requests完成接口文件上传
最近在准备一个公开课,主题就是利用不同的语言和不同的工具去实现文件的上传和下载. 在利用Jmeter去实现功能的时候,以及利用loadrunner去写脚本的时候,都很顺利,没有任何问题,当我尝试用Py ...
- mysql案例~关于mysql的配置文件个人见解
mysql 设置参数解读一 mysql的参数分为几类 1 session级别可以设置 2 global级别可以设置 3 session+global级别可以设置 4 ...
- 论文笔记系列-Neural Architecture Search With Reinforcement Learning
摘要 神经网络在多个领域都取得了不错的成绩,但是神经网络的合理设计却是比较困难的.在本篇论文中,作者使用 递归网络去省城神经网络的模型描述,并且使用 增强学习训练RNN,以使得生成得到的模型在验证集上 ...
- android 基础题
1. Android的四大组件是哪些,它们的作用? (1).Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很 ...
- 【转】Shell编程基础篇-上
[转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...
- 【python图像处理】图像的缩放、旋转与翻转
[python图像处理]图像的缩放.旋转与翻转 图像的几何变换,如缩放.旋转和翻转等,在图像处理中扮演着重要的角色,python中的Image类分别提供了这些操作的接口函数,下面进行逐一介绍. 1.图 ...
- springboot系列一、springboot产生背景及介绍
一.为什么用Springboot 长期以来 Java 的开发一直让人所诟病: ·Java 项目开发复杂度极其高: · Java 项目的维护非常困难: · 在云时代如何实现项目的快速部署以及快速启动: ...
- dubbo系列一、dubbo背景介绍、微服务拆分
一.背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 二.传统应用到分布式应用的演进过程 ...
- MyEclipse中如何配置默认jsp为UTF-8格式
- Ubuntu下安装Golang并测试HelloWorld
Intel Core i5-8250U,Ubuntu 18.04(安装在虚拟机Oracle VirtualBox 5.2.12上),Go 1.11, 安装步骤如下: -进入Go文档官网: https: ...