📅  最后修改于: 2023-12-03 15:18:46.446000             🧑  作者: Mango
在 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_())
以上代码片段创建了一个简单的带有 "文件" 和 "编辑" 菜单的窗口,并添加了一个 "导入" 子菜单和一个 "退出" 动作。