菜单栏、工具栏与状态栏—QMenuBar

在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象。

QMenu类提供了一个可以添加到菜单栏的小控件,也用于创建上下文菜单和弹出菜单。每个QMenu对象都可以包含一个或多个QAction对象或级联的QMenu对象。

要创建一个弹出菜单,PyQt API提供了createPopupMenu()函数;menuBar()函数用于返回主窗口的QMenuBar对象;addMenu()函数可以将菜单添加到菜单栏中;通过addAction()函数可以在菜单中进行添加操作。

在设计菜单系统时使用的一些方法:
  menuBar()    返回主窗口的QMenuBar对象

  addMenu()    在菜单栏中添加一个新的QMenu对象

  addAction()      向QMenu小控件中添加一个操作按钮,其中包含文本或图标

  setEnabled()    将操作按钮状态设置为启用/禁用

  addSeperator()  在菜单中添加一条分隔线

  clear()      删除菜单/菜单栏的内容

  setShortcut()   将快捷键关联到操作按钮

  setText()        设置菜单项的文本

  setTitle()     设置QMenu小控件的标题

  text()       返回与QAction对象关联的文本

  title()       返回QMenu小控件的标题

单击任何QAction按钮时,QMenu对象都会发射triggered信号。

案例34  QMebuBarr的使用

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


class MenuBarDemo(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        layout = QHBoxLayout()
        bar = self.menuBar()
        file = bar.addMenu("File")
        file.addAction("New")

        save = QAction("Save", self)
        save.setShortcut("Ctrl+S")
        file.addAction(save)
        edit = file.addMenu("Edit")
        edit.addAction("Copy")
        edit.addAction("Paste")
        quit = QAction("Quit", self)
        file.addAction(quit)

        file.triggered[QAction].connect(self.processtrigger)
        self.setLayout(layout)
        self.setWindowTitle("Menu Demo")

    def processtrigger(self, q):
        print(q.text() + " is triggered")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    demo = MenuBarDemo()
    demo.show()
    sys.exit(app.exec_())

 

posted @ 2020-08-05 17:18  Laney_Sun  阅读(453)  评论(0编辑  收藏  举报