📜  pyqt 菜单栏示例 - Python (1)

📅  最后修改于: 2023-12-03 15:18:46.446000             🧑  作者: Mango

PyQt 菜单栏示例 - Python

在 PyQt 应用程序中,菜单栏是一种常用的界面元素,它提供了对程序的各种功能进行访问的途径。在这个示例中,我们将学习如何创建和使用菜单栏。

目录
安装 PyQt

在使用 PyQt 编写程序之前,需要安装 PyQt,可以使用 pip 进行安装:

pip install pyqt5
创建菜单栏

使用 PyQt 创建菜单栏的第一步是创建 QMainWindow 对象。以下代码片段演示了如何创建一个简单的窗口,并在窗口中创建一个菜单栏:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('文件')
        editMenu = menubar.addMenu('编辑')

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('菜单栏示例')
        self.show()

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

在上面的代码片段中,我们使用了 QMainWindow 类来创建主窗口。然后,我们调用了 QMainWindow 的 menuBar() 方法来创建一个菜单栏,并使用 addMenu() 方法创建两个顶级菜单("文件"和"编辑")。

创建子菜单

在 PyQt 中,子菜单是一个嵌套在另一个菜单项下的菜单。要创建子菜单,我们可以使用 addMenu() 方法,如下所示:

fileMenu = menubar.addMenu('文件')
importMenu = fileMenu.addMenu('导入')

添加导入子菜单的完整代码示例如下:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        menubar = self.menuBar()

        fileMenu = menubar.addMenu('文件')
        importMenu = fileMenu.addMenu('导入')

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('菜单栏示例')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    sys.exit(app.exec_())
向菜单栏添加动作

在 PyQt 中,菜单项可以执行程序中的某些动作。例如,我们可以向菜单栏添加一个 "退出" 动作,以退出程序。要向菜单栏添加动作,我们需要使用 QAction 对象。以下是向菜单栏添加 "退出" 动作的代码示例:

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

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('文件')

        exitAct = QAction('退出', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.triggered.connect(self.close)

        fileMenu.addAction(exitAct)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('菜单栏示例')
        self.show()

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

在上面的代码示例中,我们创建了一个 QAction 对象并设置了它的名称和快捷键。然后,我们连接了 triggered 信号到 close 槽函数上。最后,我们将 QAction 对象添加到文件菜单中。

完整代码片段

在这里是完整的 PyQt 菜单栏示例的代码片段:

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

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        menubar = self.menuBar()

        fileMenu = menubar.addMenu('文件')
        editMenu = menubar.addMenu('编辑')

        impMenu = QMenu('导入', self)
        impAct = QAction('导入邮件', self)
        impMenu.addAction(impAct)

        newAct = QAction('新建', self)

        fileMenu.addAction(newAct)
        fileMenu.addMenu(impMenu)

        exitAct = QAction('退出', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.triggered.connect(self.close)

        fileMenu.addAction(exitAct)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('菜单栏示例')
        self.show()

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

以上代码片段创建了一个简单的带有 "文件" 和 "编辑" 菜单的窗口,并添加了一个 "导入" 子菜单和一个 "退出" 动作。