Menus and toolbars in PyQt5

原文链接: http://zetcode.com/gui/pyqt5/menustoolbars/


本节,我们将创建菜单和工具栏。
菜单是菜单栏中的一组命令,工具栏工具栏是应用程序中常用的按钮和一些命令。


Main Window

QMainWindow类提供了一个应用程序主窗口,这能够创建一个拥有状态栏、工具栏和菜单栏的经典应用窗口框架。

Statusbar

状态栏是一个用于显示状态信息的组件。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

This program creates a statusbar.

author: Jan Bodnar
website: zetcode.com 
last edited: January 2015
"""

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组件的帮助下,创建成功。


为了得到statusBar,我们调用了QtGui.QMainWindow类的statusBar()方法。第一次调用该方法创建了一个状态栏,之后方法返回这个statusBar的对象。

showMessage()方法在statusBar上面显示信息。

MenuBar

一个菜单栏是GUI程序的Common part。

是各种各样菜单中的一组命令操作

Mac OS 对待菜单栏有些不同。为了得到相似的效果,我们可以加入一行如下代码:

menubar.setNativeMenuBar(False)


#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

This program creates a menubar. The
menubar has one menu with an exit action.

author: Jan Bodnar
website: zetcode.com 
last edited: January 2015
"""

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

在上述例子中,我们创建了一个只有一个菜单的菜单栏。这个菜单包含一个选中后中断程序的动作。快捷键为:Ctrl + Q。

exitAction = QAction(QIcon('exit.png'), '&Exit', self)        
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
QAction是一个用于菜单栏、工具栏或快捷键的抽象动作。在上述三行代码中,我们用指定图标和一个'Exit'标签创建了一个动作(Action)。
还为该动作定义了一个快捷键。

第三行代码,创建了一个状态tip,当我们将鼠标移动在菜单上时,显示在状态栏。

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

menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
上述代码的menubar()方法,返回一个菜单栏,我们创建了一个File菜单,将Exit Action添加到File菜单中


Toolbar

菜单组合了所有我们可以在应用中使用的命令。工具栏提供了一个快速访问频繁使用的命令的方式。

#!/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: January 2015
"""

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

在上述例子中,我们创建了一个简单的工具栏,该工具栏有一个动作,退出(当该动作被触发时,应用终止)

exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(qApp.quit)
和上面创建一个菜单栏类似,我们创建一个动作对象,该对象有一个标签,图标和快捷键。

一个QtGui.QMainWindow的quit()方法被连接到触发信号。

self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
这里我们创建一个工具栏,添加一个动作对象。


Putting it together

在该节的最后,我们创建一个菜单栏,工具栏,和一个状态栏。同时我们会创建一个中心组件。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

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

author: Jan Bodnar
website: zetcode.com 
last edited: January 2015
"""

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)

        exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(self.close)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        toolbar = self.addToolBar('Exit')
        toolbar.addAction(exitAction)
        
        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应用。

textEdit = QTextEdit()
self.setCentralWidget(textEdit)
这里我们创建一个文本编辑框组件,我们把他设置成QMainWindow的中心组件。中心组件将会占据所有剩下的空间。

在该节的教程中,我们使用了菜单、工具栏、状态栏和一个应用的主窗口。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值