PyQt5学习教程7:在窗体中增加菜单栏和工具栏

本篇文章将讲解在窗体中增加菜单栏和工具栏的方法,菜单栏和工具栏是QMainWindow的组件,我们使用QMainWindow创建对象,就可以直接使用菜单栏和工具栏。由于菜单栏和工具栏会对应相应的处理代码,我们还需增加Action对象,用于与处理函数相关联。


源程序:

import sys
from PyQt5.QtWidgets import QWidget, \
                              QPushButton, \
                              QToolTip, \
                              QMessageBox, \
                              QApplication, \
                              QDesktopWidget, \
                              QMainWindow, \
                              QAction, \
                              qApp
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtGui import QFont, \
                          QIcon


# QMainWindow是QWidget的派生类
class CMainWindow(QMainWindow):

    def __init__(self):
        super().__init__()

        # ToolTip设置
        QToolTip.setFont(QFont('华文楷体', 10))

        # statusBar设置
        self.statusBar().showMessage('准备就需')

        # 退出Action设置
        exitAction = QAction(QIcon('1.png'), '&Exit', self)
        exitAction.setShortcut('ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(qApp.quit)     # qApp就相当于QCoreApplication.instance()

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

        # toolBar设置
        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)

        # PushButton设置
        btnQuit = QPushButton('退出', self)
        btnQuit.setToolTip("点击此按钮将退出应用程序!")
        btnQuit.setStatusTip("点击此按钮将退出应用程序!")
        btnQuit.clicked.connect(QCoreApplication.instance().quit)
        btnQuit.resize(btnQuit.sizeHint())
        btnQuit.move(100, 100)

        self.resize(500, 300)
        self.center()
        self.setFont(QFont('华文楷体', 10))
        self.setWindowTitle('PyQt5应用教程(snmplink编著)')
        self.setWindowIcon(QIcon('10.png'))
        self.show()

    def center(self):
        # 得到主窗体的框架信息
        qr = self.frameGeometry()
        # 得到桌面的中心
        cp = QDesktopWidget().availableGeometry().center()
        # 框架的中心与桌面中心对齐
        qr.moveCenter(cp)
        # 自身窗体的左上角与框架的左上角对齐
        self.move(qr.topLeft())

    def closeEvent(self, QCloseEvent):
        reply = QMessageBox.question(self,
                                     'PyQt5应用教程(snmplink编著)',
                                     "是否要退出应用程序?",
                                     QMessageBox.Yes | QMessageBox.No,
                                     QMessageBox.No)
        if reply == QMessageBox.Yes:
            QCloseEvent.accept()
        else:
            QCloseEvent.ignore()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = CMainWindow()
    sys.exit(app.exec_())



解释:

1、第9行:输入QAction模块,用于菜单栏和工具栏的时间处理。

2、第10行:增加qApp,实际上qApp就是QCoreApplication.instance(),大家如果用过QT就很清楚了。

3、第29行:声明Action对象,指定图标和文字,含有&的字母,为Alt键的关联按键,大家只需查看一下其它应用程序的菜单快捷键使用方法就应该明白了。

4、第30行:指定Action对象的快捷键。

5、第31行:指定状态栏的提示信息。

6、第32行:指定当Action对象触发事件发生时的关联函数,这里调用的是退出应用程序函数。

7、第35行:声明menubar菜单对象。

8、第36行:在menubar菜单中加入File菜单。

9、第37行:对file菜单加入事先设置好的Action。

10、第40行:设置工具栏的显示信息。

11、第41行:对工具栏加入事先设置好的Action。


程序的运行效果:

PyQt5学习教程7:在窗体中增加菜单栏和工具栏_第1张图片


原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163     
CSDN:http://blog.csdn.net/qingwufeiyang12346

你可能感兴趣的:(python)