Шаг 276.
Библиотека PyQt5.
Создание SDI- и MDI-приложений. Меню. Класс QAction
На этом шаге мы рассмотрим назначение, форматы конструктора и основные методы этого класса.
Класс QAction описывает объект действия, который можно добавить в меню, на панель инструментов или прикрепить к какому-либо компоненту в качестве пункта его контекстного
меню. Один и тот же объект действия допускается добавлять в несколько мест - например, в меню и на панель инструментов, - это позволяет управлять видимостью и доступностью действия
централизованно. Иерархия наследования для класса QAction следующая:
Форматы конструктора класса QAction:
<Объект> = QAction(<QObject>)
<Объект> = QAction(<Название>, <QObject>)
<Объект> = QAction(<QIcon>, <Название>, <QObject>)
В параметре <QObject> указывается ссылка на родительский компонент или значение None. Внутри текста в параметре <Название> символ &,
указанный перед буквой или цифрой, задает комбинацию клавиш быстрого доступа. В этом случае символ, перед которым указан символ &, будет, в качестве подсказки пользователю, подчеркнут.
При одновременном нажатии клавиши Alt и подчеркнутого символа меню окажется выбранным. Чтобы вывести сам символ &, необходимо его удвоить. Параметр <QIcon> устанавливает значок.
Класс QAction поддерживает следующие основные методы (полный их список можно найти по адресу
https://doc.qt.io/qt-5/qaction.html):
- setText (<Название>) - задает название действия. Внутри текста в параметре <Название> символ &, указанный перед буквой или
цифрой, задает комбинацию клавиш быстрого доступа. Нажатие комбинации клавиш быстрого доступа сработает только в том случае, если меню, в котором находится пункт, является активным;
- text () - возвращает название действия;
- setIcon (<QIcon>) - устанавливает значок;
- icon () - возвращает значок (экземпляр класса QIcon);
- setIconVisibleInMenu (<Флаг>) - если в качестве параметра указано значение False, значок в меню отображаться не будет;
- setSeparator (<Флаг>) - если в качестве параметра указано значение True, объект станет разделителем;
- isSeparator () - возвращает значение True, если объект является разделителем, и False - в противном случае;
- setShortcut (<QKeySequence>) - задает комбинацию "горячих" клавиш. Нажатие комбинации "горячих" клавиш по умолчанию сработает даже в том случае, если меню не
является активным. Примеры указания значения:
"Ctrl+O"
QtGui.QKeySequence("Ctrl+O")
QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_O))
QtGui.QKeySequence.fromString("Ctrl+O")
QtGui.QKeySequence.Open
- setShortcuts() - позволяет задать сразу несколько комбинаций "горячих" клавиш. Форматы метода:
setShortcuts(<Список с экземплярами класса QKeySequence>)
setShortcuts(<Стандартная комбинация клавиш>)
В параметре <Стандартная комбинация клавиш> указываются атрибуты из перечисления StandardKey класса QKeySequence (например,
Open, Close, Copy, Cut и т.д. - полный их список можно найти в документации по классу QKeySequence);
- setShortcutContext (<Область>) - задает область действия комбинации "горячих" клавиш. В качестве параметра указываются следующие атрибуты класса
QtCore.Qt:
- WidgetShortcut (или 0) - комбинация доступна, если родительский компонент имеет фокус;
- WidgetWithChlidrenShortcut (или 3) - комбинация доступна, если фокус имеет родительский компонент или любой дочерний компонент;
- WindowShortcut (или 1) - комбинация доступна, если окно, в котором расположен компонент, является активным;
- ApplicationShortcut (или 2) - комбинация доступна, если любое окно приложения является активным;
- setToolTip (<Teкст>) - задает текст всплывающей подсказки;
- toolTip () - возвращает текст всплывающей подсказки;
- setWhatsThis (<Teкст>) - задает текст справки;
- whatsThis () - возвращает текст справки;
- setStatusTip (<Teкст>) - задает текст, который будет отображаться в строке состояния при наведении указателя мыши на пункт меню;
- statusTip () - возвращает текст для строки состояния;
- setCheckable (<Флаг>) - если в качестве параметра указано значение True, действие является переключателем, который может находиться в двух состояниях: установленном и неустановленном;
- isCheckable() - возвращает значение True, если действие является переключателем, и False - в противном случае;
- setChecked (<Флаг>) - если в качестве параметра указано значение True, действие-переключатель будет находиться в установленном состоянии. Метод является слотом;
- isChecked () - возвращает значение True, если действие-переключатель находится в установленном состоянии, и False - в противном случае;
- setDisabled (<Флаг>) - если в качестве параметра указано значение True, действие станет недоступным. Значение False делает действие вновь доступным. Метод является слотом;
- setEnabled (<Флаг>) - если в качестве параметра указано значение False, действие станет недоступным. Значение True делает действие вновь доступным. Метод является слотом;
- isEnabled () - возвращает значение True, если действие доступно, и False - в противном случае;
- setVisible (<Флаг>) - если в качестве параметра указано значение False, действие будет скрыто. Значение True вновь выводит действие на экран. Метод является слотом;
- isVisible () - возвращает значение False, если действие скрыто, и True - в противном случае;
- setMenu (<QMenu>) - устанавливает вложенное меню;
- menu () - возвращает ссылку на вложенное меню (экземпляр класса QMenu) или значение None, если вложенного меню нет;
- setFont (<QFont>) - устанавливает шрифт для текста;
- font () - возвращает экземпляр класса GFont с текущими параметрами шрифта;
- setAutoRepeat (<Флаг>) - если в качестве параметра указано значение True (значение по умолчанию), действие будет повторяться, пока удерживается нажатой комбинация "горячих" клавиш;
- setPriority (<Приopитет>) - задает приоритет действия. В качестве параметра указываются атрибуты:
- LowPriority (низкий),
- NormalPriority (нормальный) или
- HighPriority (высокий)
класса QAction;
- priority () - возвращает текущий приоритет действия;
- setData (<Данные>) - позволяет сохранить пользовательские данные любого типа в объекте действия;
- data () - возвращает пользовательские данные, сохраненные ранее с помощью метода setData(), или значение None;
- setActionGroup (<QActionGroup>) - добавляет действие в указанную группу;
- actionGroup () - возвращает ссылку на группу (экземпляр класса QActionGroup) или значение None;
- showStatusText ([widget=None]) - отправляет событие QEvent.StatusTip указанному в параметре widget компоненту и возвращает значение True,
если событие успешно отправлено. Если компонент не указан, событие посылается родителю действия.
Чтобы обработать событие, необходимо наследовать класс компонента и переопределить метод event(self, <event>). При событии QEvent.StatusTip через параметр
<event> доступен экземпляр класса QStatusTipEvent. Получить текст для строки состояния можно через метод tip() объекта события. Вот пример обработки
события в классе, наследующем класс QLabel:
def event(self, e):
if e.type() = QtCore.QEvent.StatusTip:
self.setText(e.tip())
return True
return QtWidgets.QLabel.event(self, e)
- hover () - посылает сигнал hovered(). Метод является слотом;
- toggle () - производит изменение состояния переключателя на противоположное. Метод является слотом;
- trigger () - посылает сигнал triggered(). Метод является слотом.
Класс QAction поддерживает следующие сигналы:
- changed () - генерируется при изменении действия;
- hovered () - генерируется при наведении указателя мыши на объект действия;
- toggled (<Состояние>) - генерируется при изменении состояния переключателя. Внутри обработчика через параметр доступно текущее состояние в виде логической величины;
- triggered (<Состояние переключателя>) - генерируется при выборе пункта меню, нажатии кнопки на панели инструментов, нажатии комбинации клавиш или вызове метода
trigger(). В параметре доступно текущее состояние действия-переключателя в виде логической величины - для обычных действий значение параметра всегда равно False.
На следующем шаге мы рассмотрим объединение переключателей в группу.
Предыдущий шаг
Содержание
Следующий шаг