在这篇文章中,我将讲解如何创建菜单栏以及工具栏。
我们将创建一个主窗口,以一个简单的 QLabel 作为中心窗口部件,此外还有菜单栏、工具栏和状态栏。
QLabel 用于在菜单被点击后显示相应的文本,状态栏用于在光标移动到菜单上时显示相应的提示。
我们先给出完整的代码,然后再具体解释这些代码的含义。
完整代码示例
动作(QAction)
创建动作
我们使用 QAction 来创建一个动作,创建 QAction 有以下三种方式:
例如:
QObject 表示该动作的父对象,一般将其设为当前窗体,这里即为 self。
设置快捷键
然后使用 QAction 的 setShortcut() 方法来设置快捷键,可以使用 PyQt 内置的常量来设置,例如 QKeySequence.Open,也可以使用字符串来设置,例如 "Ctrl+O"。
设置提示
接着,设置状态栏和工具栏提示信息:
该提示信息会在鼠标移到菜单选项上方时显示在状态栏中,以及移到工具栏上方时以气泡方式显示出来。
连接信号
最后,将动作(action),也就是菜单的选项,连接到对应的槽中:
当我们点击菜单选项时,便会触发该动作的 triggered() 信号,从而调用相应的方法。
统一创建动作
当我们需要创建多个动作时,可以编写一个专门用来创建动作的方法,统一连接信号、设置快捷键、提示信息等等。
这样我们就可以通过这个方法来创建动作并完成一系列的设置了:
菜单栏(QMenuBar)
添加菜单
创建完 QAction 之后,我们需要创建菜单来放置这些动作。通过 QMainWindow 的 menuBar() 方法可以获取到菜单栏实例(QMenuBar),调用该实例的 addMenu() 方法则可以添加菜单(QMenu)。
添加动作
添加完菜单之后,其本身是空的,我们需要将先前创建的动作添加到菜单上。
添加一组动作
当我们需要添加多个动作时,可以编写一个 addActions() 方法来批量添加一组动作。接下来,我们就来看看如何实现 addActions() 方法。
添加子菜单
我们通过 QMenu.addMenu() 方法在 Edit 菜单中添加子菜单 Format,并调用自定义的 addActions() 方法来添加一组动作:
工具栏(QToolBar)
添加工具栏
禁止移动/浮动
设置对象名
通过设置工具栏对象的名称,我们可以在后续代码中更方便地引用该工具栏。实际上,每一个 QObject 都有一个 setObjectName() 方法,设定对象名相当于给对象设定一个独一无二的标识。
添加动作
添加一组动作
由于 QMenu 与 QToolBar 都提供了 addAction() 和 addSeparator() 方法,因此我们也可以将上面自定义的 addActions() 方法用于工具栏的动作添加:
至此,我们就完成了菜单栏和工具栏的创建。
相关信号
QAction
QMenu
QMenuBar
相关文章