当前位置: 首页 > 文档资料 > PyQt 中文教程 >

QMenuBar QMenu 和 QAction

优质
小牛编辑
133浏览
2023-12-01

QMainWindow对象标题栏正下方的水平QMenuBar保留用于显示QMenu对象。

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

为了创建弹出菜单,PyQt API提供了createPopupMenu()函数。 menuBar()函数返回主窗口的QMenuBar对象。 addMenu()函数允许向栏添加菜单。 反过来,通过addAction()方法在菜单中添加操作。

下表列出了设计菜单系统时使用的一些重要方法。

Sr.No.方法和描述
1

menuBar()

返回主窗口的QMenuBar对象

2

addMenu()

将新的QMenu对象添加到菜单栏

3

addAction()

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

4

setEnabled()

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

5

addSeperator()

在菜单中添加分隔线

6

Clear()

删除菜单/菜单栏的内容

7

setShortcut()

将键盘快捷键关联到操作按钮

8

setText()

指定文本到操作按钮

9

setTitle()

设置QMenu小部件的标题

10

text()

检索与QAction对象关联的文本

11

title()

检索与QMenu对象关联的文本

只要单击任何QAction按钮,QMenu对象就会发出triggered()信号。 对单击的QAction对象的引用将传递给连接的槽功能。

例子 (Example)

在此示例中,首先存储对顶级窗口(必须是QMainWindow对象)的QMenuBar对象的所有引用。

bar = self.menuBar()

文件菜单通过addMenu()方法添加到菜单栏。

file = bar.addMenu("File")

菜单中的动作按钮可以是字符串或QAction对象。

file.addAction("New")
save = QAction("Save",self)
save.setShortcut("Ctrl+S")
file.addAction(save)

子菜单添加到顶级菜单。

edit = file.addMenu("Edit")
edit.addAction("copy")
edit.addAction("paste")

由文件菜单发出的triggered()信号连接到processtrigger()方法,该方法接收引起信号的QAction对象。

file.triggered[QAction].connect(self.processtrigger)

完整的代码如下 -

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class menudemo(QMainWindow):
   def __init__(self, parent = None):
      super(menudemo, self).__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"
def main():
   app = QApplication(sys.argv)
   ex = menudemo()
   ex.show()
   sys.exit(app.exec_())
if __name__ == '__main__':
   main()

上面的代码产生以下输出 -

QMenuBar,QMenu和QAction Widgets输出