Изучение нескольких способов назначения действий кнопкам QMenuBar в PyQt

В PyQt класс QMenuBar предоставляет строку меню, содержащую меню. Каждое меню обычно состоит из нескольких объектов QAction, которые представляют отдельные пункты меню или кнопки. Назначение действий этим кнопкам позволяет вам определить поведение при их нажатии. В этой статье мы рассмотрим различные способы придания кнопке QMenuBar действия на примерах кода.

Метод 1: использование QAction и QShortcut

from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction, QShortcut
from PyQt5.QtGui import QKeySequence
class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        menubar = self.menuBar()
        file_menu = menubar.addMenu("File")
        action_open = QAction("Open", self)
        action_open.triggered.connect(self.open_file)
        shortcut_open = QShortcut(QKeySequence("Ctrl+O"), self)
        shortcut_open.activated.connect(self.open_file)
        file_menu.addAction(action_open)
        self.addAction(shortcut_open)
    def open_file(self):
        print("File opened!")
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()

Метод 2. Использование лямбда-функций

from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction
class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        menubar = self.menuBar()
        file_menu = menubar.addMenu("File")
        action_open = QAction("Open", self)
        action_open.triggered.connect(lambda: self.open_file("file.txt"))
        file_menu.addAction(action_open)
    def open_file(self, filename):
        print(f"Opening file: {filename}")
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()

Метод 3. Использование собственных слотов

from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction
from PyQt5.QtCore import Qt
class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        menubar = self.menuBar()
        file_menu = menubar.addMenu("File")
        action_open = QAction("Open", self)
        action_open.setShortcut(Qt.CTRL + Qt.Key_O)
        action_open.triggered.connect(self.open_file)
        file_menu.addAction(action_open)
    def open_file(self):
        print("File opened!")
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()

В этой статье мы рассмотрели различные методы назначения действий кнопкам QMenuBar в PyQt. Вы можете использовать QAction и QShortcut, лямбда-функции или пользовательские слоты, чтобы определить поведение кнопок при нажатии. Эти подходы обеспечивают гибкость и позволяют эффективно обрабатывать действия кнопок в приложениях PyQt.

Используя эти методы, вы можете улучшить функциональность графического интерфейса PyQt и создать более интерактивный пользовательский интерфейс.