• 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)

    
    
  • 相关阅读:
    web常用自动化库——selenium总结
    python协程总结
    python多进程总结
    python多线程总结
    Scrapy进阶知识点总结(六)——中间件详解
    Git用法总结
    Scrapy进阶知识点总结(五)——Settings
    Scrapy进阶知识点总结(四)——Item Pipeline
    Scrapy进阶知识点总结(三)——Items与Item Loaders
    Scrapy进阶知识点总结(二)——选择器Selectors
  • 原文地址:https://www.cnblogs.com/-wenli/p/10349050.html
Copyright © 2020-2023  润新知