Шаг 274.
Библиотека PyQt5.
Создание SDI- и MDI-приложений. Меню. Класс QMenu

    На этом шаге мы рассмотрим назначение, иерархию наследования и основные методы этого класса.

    Класс QMenu реализует отдельное меню на панели меню, а также вложенное, плавающее и контекстное меню. Его иерархия наследования выглядит так:

  (QObject, QPaintDevice) - QWidget - QMenu

    Форматы конструктора класса QMenu:

  <Объект> = QMenu([parent=None])
  <Объект> = QMenu(<Название>[, parent=None])

    В параметре parent указывается ссылка на родительский компонент. Внутри текста в параметре <Название> символ &, указанный перед буквой или цифрой, задает комбинацию клавиш быстрого доступа. В этом случае символ, перед которым указан символ &, будет, в качестве подсказки пользователю, подчеркнут. При одновременном нажатии клавиши Alt и подчеркнутого символа меню окажется выбранным. Чтобы вывести сам символ &, необходимо его удвоить.

    Помимо унаследованных из базовых классов, класс QMenu поддерживает ряд своих методов (здесь приведены только основные - полный их список доступен на странице https://doc.qt.io/qt-5/qmenu.html):

    Класс QMenu поддерживает следующие сигналы:

    В заключение приведем небольшой пример, иллюстрирующий использование меню (пример взят здесь: https://pythonworld.ru/gui/pyqt5-menustoolbars.html):

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):
        exitAction = QAction(QIcon('exit.png'), '&Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(qApp.quit)

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menubar')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
Архив с файлами можно взять здесь.

    Результат работы приложения показан на рисунке 1.


Рис.1. Результат работы приложения

    В приведенном выше примере, мы создаем строку меню с одним меню. Это меню будет содержать одно действие, которое будет прекращать программу. Действие доступно с помощью Ctrl + Q.

    QAction является абстракцией для действий, совершенных из меню, панели инструментов, или комбинаций клавиш. В первых двух строках метода initUI(), мы создаем действие с соответствующей иконкой. Кроме того, для этого действия определяется комбинация клавиш.

    Когда мы выбираем именно это действие, срабатывает сигнал (третья строка). Сигнал подключен к методу quit() виджета QApplication. Это завершает приложение.

    Метод menuBar() создает строку меню. Мы создаем меню файла и добавляем к нему действие выхода.

    На следующем шаге мы рассмотрим контекстное меню компонента.




Предыдущий шаг Содержание Следующий шаг