📜  如何给 QMenuBar 按钮一个动作? (1)

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

如何给 QMenuBar 按钮一个动作?

在 PyQt 中,可以通过 QMenuBar 类和 QAction 类来实现为菜单栏添加动作,从而完成按钮的具体操作。

创建 QMenuBar

在 PyQt 中,通过以下代码可以创建一个 QMenuBar 以及一个菜单:

menu_bar = QMenuBar()
file_menu = menu_bar.addMenu('File')

这个代码片段中,我们先创建了一个 QMenuBar,然后通过 addMenu() 函数为之添加一个名为 "File" 的菜单。

添加 QAction

在菜单中添加 QAction 可以通过以下代码实现:

open_action = QAction('Open', self)
file_menu.addAction(open_action)

这个代码片段中,我们首先创建一个 QAction,名称为 "Open",并将其与主窗口关联。然后,我们通过 addAction() 函数将这个 QAction 添加到之前创建的 "File" 菜单中。

给 QAction 添加动作

为 QAction 添加动作可以使用 triggered 信号。例如,当用户点击 "Open" 菜单时,我们可以通过以下代码触发一个槽函数:

open_action.triggered.connect(self.open_file_dialog)

这个代码片段中,我们定义了一个名为 open_file_dialog() 的槽函数,当用户点击 "Open" 菜单时触发。我们通过 triggered.connect() 函数将这个槽函数与 "Open" 菜单的 QAction 关联。

完整代码示例

以下是一个完整的示例程序,它创建了一个带有一个菜单栏的主窗口,并将 "Open" 操作与 "File" 菜单栏相关联:

from PyQt5.QtWidgets import QMainWindow, QMenuBar, QAction, QApplication, QFileDialog
 
 
class MainWindow(QMainWindow):
 
    def __init__(self):
        super().__init__()
 
        self.init_ui()
 
    def init_ui(self):
        menu_bar = QMenuBar()
        file_menu = menu_bar.addMenu('File')
 
        open_action = QAction('Open', self)
        file_menu.addAction(open_action)
        open_action.triggered.connect(self.open_file_dialog)
 
        self.setMenuBar(menu_bar)
        self.setGeometry(300, 300, 300, 200)
        self.show()
 
    def open_file_dialog(self):
        file_name, _ = QFileDialog.getOpenFileName(self, 'Open file', '/')
        print(file_name)
 
 
if __name__ == '__main__':
    app = QApplication([])
    main_window = MainWindow()
    app.exec_()
总结

通过 QMenuBar 和 QAction 实现菜单栏的添加和操作是 PyQt 程序中常见的需求。上述代码示例可以帮助你了解如何实现这个功能。