На этом шаге мы рассмотрим класс, который используется для выполнения указанной операции.
Состояние одних компонентов может зависеть от состояния других - например, из нескольких переключателей можно выбрать только один. Кроме того, некоторый набор компонентов может использоваться для ввода связанных данных, например имени, отчества и фамилии пользователя. В этом случае компоненты объединяют в группу.
Группа компонентов отображается внутри рамки, на верхней границе которой выводится текст заголовка. Реализовать группу позволяет класс QGroupBox. Иерархия наследования выглядит так:
(QObject, QPaintDevice) - QWidget - QGroupBox
Создать экземпляр класса QGroupBox можно следующим образом:
<Объект> = QGroupBox([<Родитель>]) <Объект> = QGroupBox(<Текст>[, <Родитель>])
В необязательном параметре <Родитель> можно указать ссылку на родительский компонент. Параметр <Текст> задает текст заголовка, который отобразится на верхней границе рамки. Внутри текста заголовка символ &, указанный перед буквой, задает комбинацию клавиш быстрого доступа. В этом случае буква, перед которой указан символ &, будет, в качестве подсказки пользователю, подчеркнута. При одновременном нажатии клавиши Alt и подчеркнутой буквы первый компонент из группы окажется в фокусе ввода.
После создания экземпляра класса QGroupBox следует добавить компоненты в какой-либо контейнер, а затем передать ссылку на контейнер в метод setLayout() группы.
Типичный пример использования класса QGroupBox представлен ниже. Созданная им группа показана на рисунке 1.
from PyQt5 import QtWidgets import sys app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.setWindowTitle("QGroupBox") window.resize(200, 80) mainbox = QtWidgets.QVBoxLayout() radio1 = QtWidgets.QRadioButton("&Да") radio2 = QtWidgets.QRadioButton("&Нет") box = QtWidgets.QGroupBox("&Вы знаете язык Python?") # Объект группы hbox = QtWidgets.QHBoxLayout() # Контейнер для группы hbox.addWidget(radio1) # Добавляем компоненты hbox.addWidget(radio2) box.setLayout(hbox) # Передаем ссылку на контейнер mainbox.addWidget(box) # Добавляем группу в главный контейнер window.setLayout(mainbox) # Передаем ссылку на главный контейнер в окно radio1.setChecked(True) # Выбираем первый переключатель window.show() sys.exit(app.exec_())
Результат работы приложения изображен на рисунке 1.
Рис.1. Пример использования компонента QGroupBox
На следующем шаге мы закончим изучение этого вопроса.