PyQt5初级教程--PyQt5中的菜单和工具栏[4/13]

想用PyQt5写GUI,但是网上的PyQt5资源太少了,找到一个英文的,翻译一下,和学习PyQt5的同学共勉!

(本系列中所有代码在windows7 64位[]/Python 3.4.3 32bit/PyQt GPL v5.5 for Python v3.4 (x32)/eric6-6.0.8下测试通过.)

原本地址:http://zetcode.com/gui/pyqt5/

================================================================================

PyQt5中的菜单和工具栏

在这部分,我们会创建菜单和工具栏.一个菜单是在一个菜单条中的一组命令.一个工具栏是在程序中有一些常用命令的按钮.

主窗口

QMainWindow类提供了一个主程序窗口.这允许我们创建一个有状态栏、工具栏和菜单栏的典型程序架构.

状态栏

一个状态栏是一个用于显示状态信息的部件.

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部件的帮助下创建的.

self.statusBar().showMessage('Ready')

要得到状态栏,我们要调用QtGui.QMainWindow类中的statusBar()方法.第一次调用这个方法会创建一个状态栏.随后的调用会返回状态栏对象.showMessage()会显示一条信息在状态栏上.

菜单栏

一个菜单栏是一个GUI程序的通用部分.它是在不同菜单中的一组命令(Mac OS对待菜单栏不同.要得到相同的输出,我们需要添加下面这条代码:menubar.setNativeMenuBar(False).)

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标签.而且还定义了一个快捷键.第三行代码创建了一个状态提示,当我们将鼠标放到这个菜单上的时候它会显示在状态栏上.

exitAction.triggered.connect(qApp.quit)
当我们选择了这个指定的动作时,会触发一个信号.信号是被连接到QApplication部件的quit()方法.它会终止程序.

menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
menuBar()方法创建一个菜单栏.我们创建一个file菜单,并将exit动作追加到它上面.

工具栏

菜单聚合了我们在程序中所有可以使用的命令.工具栏提供了最常用的命令的快捷访问.

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_())
在上面的例子中,我们创建了一个简单的工具栏.工具栏有一个工具动作,一个exit动作在被触发时会终止程序.

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)

这就是我们创建了一个工具栏并添加一个动作对象的例子.

图片:工具栏

将它们放到一起

在这部分的最后一个例子,我们会创建一个菜单栏、工具栏和状态栏.我们还会创建一个中心部件.

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的中心部件.中心部件会占据所有的剩余区域.

图片:主窗口


你可能感兴趣的:(PyQt5)