Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >PYQT中的菜单和工具栏

PYQT中的菜单和工具栏

作者头像
小飞侠xp
发布于 2018-12-24 02:27:35
发布于 2018-12-24 02:27:35
2.6K00
代码可运行
举报
运行总次数:0
代码可运行

在这部分的PyQt5教程中,我们将创建菜单和工具栏。菜单式位于菜单栏的一组命令操作。工具栏是应用窗体中由按钮和一些常规命令操作组成的组件。

QMainWindow类提供了一个应用主窗口。默认创建一个拥有状态栏、工具栏和菜单栏的经典应用窗口骨架。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.statusBar().showMessage('Ready')
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Statusbar')
        self.show()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

状态栏又QMainWindow组件帮助创建完成(依赖于QMainWindow组件)。 self.statusBar().showMessage('Ready') 为了得到状态栏,我们调用了QtGui.QMainWindow类的statusBar()方法。第一次调用这个方法创建了一个状态栏。随后方法返回状态栏对象。然后用showMessage()方法在状态栏上显示一些信息。

菜单栏

菜单栏是GUI应用的常规组成部分。是位于各种菜单中的一组命令操作(Mac OS 对待菜单栏有些不同。为了获得全平台一致的效果,我们可以在代码中加入一行:menubar.setNativeMenuBar(False)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()      
    def initUI(self):                    
        exitAction = QAction(QIcon('exit.png'), '&Exit', self)        
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(qApp.quit)
        self.statusBar()
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menubar')    
        self.show()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_()) 

在上面的例子中,我们创建了有一个菜单项的菜单栏。这个菜单项包含一个选中后中断应用的动作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exitAction = QAction(QIcon('exit.png'), '&Exit', self)   
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')

QAction是一个用于菜单栏、工具栏或自定义快捷键的抽象动作行为。在上面的三行中,我们创建了一个有指定图标和文本为'Exit'的标签。另外,还为这个动作定义了一个快捷键。第三行创建一个当我们鼠标浮于菜单项之上就会显示的一个状态提示。

当我们选中特定的动作,一个触发信号会被发射。信号连接到QApplication组件的quit()方法。这样就中断了应用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exitAction.triggered.connect(qApp.quit)

menuBar()方法创建了一个菜单栏。我们创建一个file菜单,然后将退出动作添加到file菜单中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
工具栏

菜单可以集成所有命令,这样我们可以在应用中使用这些被集成的命令。工具栏提供了一个快速访问常用命令的方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# !/usr/bin/python3

# -*- coding: utf-8 -*-
"""
This program creates a toolbar.
The toolbar has one action, which
terminates the application, if triggered.
"""
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(qApp.quit)
        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Toolbar')
        self.show()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
子菜单

子菜单是位于另一个菜单中的菜单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
This program creates a submenu.
"""

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QMenu, QApplication

class Example(QMainWindow):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):         
        
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('File')
        
        impMenu = QMenu('Import', self)
        impAct = QAction('Import mail', self) 
        impMenu.addAction(impAct)
        
        newAct = QAction('New', self)        
        
        fileMenu.addAction(newAct)
        fileMenu.addMenu(impMenu)
        
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Submenu')    
        self.show()
        
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在示例中,我们有两个菜单项; 一个位于“文件”菜单中,另一个位于“文件”的“导入”子菜单中。

  1. 使用创建新菜单QMenu。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
impMenu = QMenu('Import', self)
  1. 将一个动作添加到子菜单中addAction()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
impAct = QAction('Import mail', self) 
impMenu.addAction(impAct)
Context menu(弹出菜单)

上下文菜单(也称为弹出菜单)是在某些上下文下显示的命令列表。例如,在Opera网页浏览器中,当我们右键单击网页时,我们会得到一个上下文菜单。在这里,我们可以重新加载页面,返回或查看页面源。如果我们右键单击工具栏,我们将获得另一个用于管理工具栏的上下文菜单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

This program creates a context menu.

Author: Jan Bodnar
Website: zetcode.com 
Last edited: August 2017
"""

import sys
from PyQt5.QtWidgets import QMainWindow, qApp, QMenu, QApplication

class Example(QMainWindow):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):         
        
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Context menu')    
        self.show()
    
    
    def contextMenuEvent(self, event):
       
           cmenu = QMenu(self)
           
           newAct = cmenu.addAction("New")
           opnAct = cmenu.addAction("Open")
           quitAct = cmenu.addAction("Quit")
           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_())
工具栏

菜单可以集成所有命令,这样我们可以在应用中使用这些被集成的命令。工具栏提供了一个快速访问常用命令的方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

This program creates a toolbar.
The toolbar has one action, which
terminates the application, if triggered.

Author: Jan Bodnar
Website: zetcode.com 
Last edited: August 2017
"""

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon

class Example(QMainWindow):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):               
        
        exitAct = QAction(QIcon('exit24.png'), 'Exit', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.triggered.connect(qApp.quit)
        
        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAct)
        
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Toolbar')    
        self.show()
        
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

上述例子中,我们创建了一个简单的工具栏。工具栏有一个动作,当这个退出动作被触发时应用将会被中断。

  1. 我们创建了一个动作对象,和之前菜单栏中的部分代码相似。这个动作有一个标签,图标和快捷键。并且将QtGui.QMainWindow的quit()方法连接到了触发信号上。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(qApp.quit)
  1. 这里我们创建了一个工具栏,并且在其中插入一个动作对象。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
组合在一起
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
This program creates a skeleton of
a classic GUI application with a menubar,
toolbar, statusbar, and a central widget. 
"""

import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):   
    def __init__(self):
        super().__init__()
        self.initUI()        
    def initUI(self):                   
        textEdit = QTextEdit()
        self.setCentralWidget(textEdit)
        exitAct = QAction(QIcon('exit24.png'), 'Exit', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.setStatusTip('Exit application')
        exitAct.triggered.connect(self.close)
        self.statusBar()
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAct)
        toolbar = self.addToolBar('Exit')
        toolbar.addAction(exitAct)       
        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Main window')    
        self.show()             
if __name__ == '__main__':    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

事例代码创建了一个带有菜单栏、工具栏和状态栏的经典GUI应用骨架。

  1. 在这里我们创建了一个文本编辑框组件。我们将它设置成QMainWindow的中心组件。中心组件占据了所有剩下的空间。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
textEdit = QTextEdit()
self.setCentralWidget(textEdit)

mainwindow

在这个部分的PyQt5中,我们使用了菜单、工具栏、状态栏和一个应用主窗口。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.12.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在 PyQt4 中的菜单和工具栏¶
http://www.cppblog.com/mirguest/archive/2012/02/05/164982.html
bear_fish
2018/09/20
6060
在 PyQt4 中的菜单和工具栏¶
QtGui.QMainWindow 类提供了一个应用的主窗口。这使得我们可以创建典型的应用框架,包括状态栏,工具栏和菜单。
bear_fish
2018/09/20
6270
pyqt5创建菜单栏、状态栏和工具栏
菜单栏、状态栏与工具栏是人机交互的基本形式。一个好的交互界面一般都有部分的人机交互接口。QMainWindow类提供了一个应用主窗口。默认创建一个拥有状态栏、工具栏和菜单栏的经典应用窗口骨架。通过QMainWindow你可以添加自己的QToolBars、QDockWidgets、QMenuBar、QStatusBar等。
里克贝斯
2021/05/21
8300
pyqt5创建菜单栏、状态栏和工具栏
PyQt5--MenuBar
1 # -*- coding:utf-8 -*- 2 ''' 3 Created on Sep 13, 2018 4 5 @author: SaShuangYiBing 6 ''' 7 import sys 8 from PyQt5.QtWidgets import QApplication,QMainWindow,QAction,qApp 9 from PyQt5.Qt import QIcon 10 11 class New_test(QMainWindow): 12 de
py3study
2020/01/19
3960
PyQt5--MenuBar
PyQt5案例汇总(简洁版)
### 01菜单栏 ```python import sys from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self):
victorfengming
2021/11/26
2.1K0
对话框
对话框是一个现代GUI应用不可或缺的一部分。对话是两个人之间的交流,对话框就是人与电脑之间的对话。对话框用来输入数据,修改数据,修改应用设置等等。
小飞侠xp
2018/12/24
2.4K0
PyQt QMainWindow 简单使用
QMainWindow继承自QWidget QMainWindow相当于程序的主界面,内置了menu和toolBar。 使用 Qt Designer 可以很方便地添加menu选项。
AnRFDev
2021/02/01
1.2K0
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
Michael阿明
2022/05/10
1.9K0
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
PyQt5--QFileDiaglog
1 # -*- coding:utf-8 -*- 2 ''' 3 Created on Sep 17, 2018 4 5 @author: SaShuangYiBing 6 7 Comment: 8 ''' 9 import sys 10 from PyQt5.QtGui import QIcon 11 from PyQt5.QtWidgets import QApplication,QMainWindow,QFileDialog,QTextEdit,QAction 12 13 c
py3study
2020/01/19
4690
PyQt5--QFileDiaglog
Python高级进阶#019 pyqt5菜单menu应用,新建多窗体
3.利用Qmenu的功能,来实现多级菜单addAtion这是一个直接产生点击事件的行为;也可以用addMenu功能来增加子菜单。
刘金玉编程
2019/11/12
3K0
Python Qt GUI设计:菜单栏、工具栏和状态栏的使用方法(拓展篇—2)
在使用Qt Creator创建UI文件时,MainWindow主窗口,主要包含:菜单栏、工具栏、状态栏等。
不脱发的程序猿
2021/10/26
7.7K0
Python GUI教程三:布局
摘要:这篇文章是Python GUI教程系列的第三篇,将介绍Qt编程中的布局概念及其在Python环境下的实现
py3study
2020/01/08
1.2K0
PyQt5 入门
我的路径是:D:\ProgramData\Anaconda3\envs\cv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
Michael阿明
2022/05/10
1.5K0
PyQt5 入门
PyQt5 多文档窗口界面
本篇介绍多文档窗口界面的写法。代码中并未实现关闭窗口前文档未保存的提醒对话框,因为之前已有介绍。
用户6021899
2019/08/14
2.6K0
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
在 PyQt5 中,菜单栏(QMenuBar)、工具栏(QToolBar)和状态栏(QStatusBar)是 QMainWindow 提供的标准控件,用于帮助用户更好地与应用程序交互。它们是桌面应用程序的常见组成部分:
半截诗
2024/10/09
2.1K0
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
PyQt5的主窗口QMainWindow简介
看过上一篇我们知道,在PyQt5中了,所有的控件都是继承自。在桌面应用当中,我们常用的软件都会包含一个主窗口。主窗口就是承载所有控件的一个窗体。在PyQt5当中常用的主窗体有两种QMainWindow和QDialog。当然这两个也是继承自QWidget类。因为他们都继承自这个类,所以这三个类都是可以用来创建主窗口的,可以直接使用,也可以继承后再使用。
星星在线
2019/05/28
4K0
『开发技巧』PyQt5入门教程
PyQt5是一套来自Digia的Qt5应用框架和Python的粘合剂。支持Python2.x和Python3.x版本。本教程使用Pyhton 3。Qt库是最强大的GUI支持库的一种。PyQt5的官方主页是www.riverbankcomputing.co.uk/news。是Riverbank Computing开发了PyQt5。
小宋是呢
2019/06/27
4.4K0
『开发技巧』PyQt5入门教程
C/C++ Qt ToolBar 菜单栏组件应用
ToolBar工具栏在所有窗体应用程序中都广泛被使用,使用ToolBar可以很好的规范菜单功能分类,用户可根据菜单栏来选择不同的功能,Qt中默认自带ToolBar组件,当我们以默认方式创建窗体时,ToolBar就被加入到了窗体中,一般是以QToolBar的方式存在于对象菜单栏,如下所示。
王瑞MVP
2022/12/23
1.2K0
C/C++ Qt ToolBar 菜单栏组件应用
PyQt5 高级界面控制(表格、树、tab、dock、scrollbar、多文档界面)
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
Michael阿明
2022/05/30
7K0
PyQt5 高级界面控制(表格、树、tab、dock、scrollbar、多文档界面)
First PyQt
上面的代码实例会在屏幕上显示一个小的窗口。 在这里,我们进行了一些必要的模块导入,最基础的widget组件位于PyQt5.QtWidget模块中
小飞侠xp
2018/12/24
1.7K0
First PyQt
相关推荐
在 PyQt4 中的菜单和工具栏¶
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验