Шаг 100.
Библиотека PyQt5.
Основные компоненты. Командная кнопка
На этом шаге мы рассмотрим назначение компонента, его основные методы и сигналы.
Командная кнопка используется для запуска какой-либо операции. Кнопка реализуется с помощью класса QPushButton. Иерархия наследования:
(QObject, QPaintDevice) - QWidget - QAbstractButton - QPushButton
Конструктор класса QPushButton имеет три формата:
<Объект> = QPushButton([parent=<Родитель>])
<Объект> = QPushButton(<Текст>[, parent=<Родитель>])
<Объект> = QPushButton(<QIcon>, <Текст>[, parent=<Родитель>] )
В параметре parent указывается ссылка на родительский компонент. Если параметр не указан или имеет значение None, то компонент будет обладать своим собственным окном.
Параметр <Текст> позволяет задать текст, который отобразится на кнопке, а параметр <QIcon> позволяет добавить перед текстом значок.
Класс QPushButton наследует следующие методы из класса QAbstractButton (здесь приведены только основные - полный их список можно найти на странице https://doc.qt.io/qt-5/qabstractbutton.html):
- setText (<Текст>) - задает текст, который будет отображен на кнопке. Внутри текста символ &, указанный перед буквой или цифрой, задает комбинацию клавиш быстрого
доступа. В этом случае буква, перед которой указан символ &, будет, в качестве подсказки пользователю, подчеркнута. Одновременное нажатие клавиши Alt и подчеркнутой
буквы приведет к нажатию этой кнопки. Чтобы вывести сам символ &, необходимо его удвоить;
- text () - возвращает текст, отображаемый на кнопке;
- setShortcut (<QKeySequence>) - задает комбинацию клавиш быстрого доступа. Примеры указания значения:
button.setShortcut("Alt+B")
button.setShortcut(QtGui.QKeySequence.mnemonic("&B"))
button.setShortcut(QtGui.QKeySequence("Alt+B"))
button.setShortcut(
QtGui.QKeySequence(QtCore.Qt.ALT + QtCore.Qt.Key_E))
- setIcon (<QIcon>) - вставляет значок перед текстом кнопки;
- setIconSize (<QSize>) - задает размеры значка в виде экземпляра класса QSize. Метод является слотом;
- setAutoRepeat (<Флаг>) - если в качестве параметра указано значение True, то сигнал clicked будет периодически генерироваться, пока кнопка находится в
нажатом состоянии. Примером являются кнопки, изменяющие значение полосы прокрутки;
- animateClick ([<Интервал>]) - имитирует нажатие кнопки пользователем. После нажатия кнопка находится в этом состоянии указанный промежуток времени, по истечении
которого отпускается. Значение указывается в миллисекундах. Если параметр не указан, то интервал равен 100 миллисекундам. Метод является слотом;
- click () - имитирует нажатие кнопки без анимации. Метод является слотом;
- setCheckable (<Флаг>) - если в качестве параметра указано значение True, то кнопка является переключателем, который может находиться в двух состояниях:
установленном и неустановленном;
- setChecked (<Флаг>) - если в качестве параметра указано значение True, то кнопка-переключатель будет находиться в установленном состоянии. Метод является слотом;
- isChecked () - возвращает значение True, если кнопка находится в установленном состоянии, и False - в противном случае;
- toggle () - переключает кнопку. Метод является слотом;
- setAutoExclusive (<Флаг>) - если в качестве параметра указано значение True, то внутри контейнера может быть установлена только одна кнопка-переключатель;
- setDown (<Флаг>) - если в качестве параметра указано значение True, то кнопка будет находиться в нажатом состоянии;
- isDown () - возвращает значение True, если кнопка находится в нажатом состоянии, и False - в противном случае.
Кроме перечисленных состояний кнопка может находиться в неактивном состоянии. Для этого необходимо передать значение False в метод setEnabled(), унаследованный от класса
QWidget. Проверить, активна ли кнопка, позволяет метод isEnabled(), возвращающий значение True, если кнопка находится в активном состоянии, и False - в противном случае.
Это же касается и всех прочих компонентов, порожденных от класса QWidget.
Класс QAbstractButton поддерживает следующие сигналы:
- pressed - генерируется при нажатии кнопки;
- released - генерируется при отпускании ранее нажатой кнопки;
- clicked (<Состояние>) - генерируется при нажатии, а затем отпускании кнопки мыши над кнопкой. Именно для этого сигнала обычно назначают обработчики.
Передаваемый обработчику параметр имеет значение True, если кнопка-переключатель установлена, и False, если она сброшена или это обычная кнопка, а не переключатель;
- toggled (<Состояние>) - генерируется при изменении состояния кнопки-переключателя. Через параметр доступно новое состояние кнопки.
Класс QPushButton определяет свои собственные методы (здесь приведены только основные - полный их список можно найти на странице https://doc.qt.io/qt-5/qpushbutton.html):
- setFlat (<Флаг>) - если в качестве параметра указано значение True, то кнопка будет отображаться без рамки;
- setAutoDefault (<Флаг>) - если в качестве параметра указано значение True, кнопка может быть нажата с помощью клавиши Enter, при условии, что она находится в
фокусе. По умолчанию нажать кнопку позволяет только клавиша Пробел. В диалоговых окнах для всех кнопок по умолчанию указано значение True, а для остальных окон -
значение False;
- setDefault (<Флаг>) - задает кнопку по умолчанию. Метод работает только в диалоговых окнах. Эта кнопка может быть нажата с помощью клавиши Enter, когда фокус
ввода установлен на другой компонент, - например, на текстовое поле;
- setMenu (<QMenu>) - устанавливает всплывающее меню, которое будет отображаться при нажатии кнопки. В качестве параметра указывается экземпляр класса QMenu;
- menu () - возвращает ссылку на всплывающее меню или значение None;
- showMenu () - отображает всплывающее меню. Метод является слотом.
На следующем шаге мы рассмотрим переключатель.
Предыдущий шаг
Содержание
Следующий шаг