Это руководство содержит исчерпывающее описание использования виджета QRadioButton
в PyQt5. Мы рассмотрим основы, изучим метод setChecked
и углубимся в создание групп переключателей для взаимно исключающего выбора. Приступим!
Содержание:
- Базовый пример
QRadioButton
- Метод
setChecked
- Создание групп переключателей
- Обработка выбора пользователя
1. Базовый пример QRadioButton
QRadioButton
позволяет пользователям выбирать один вариант из набора. Вот простой пример:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QRadioButton, QVBoxLayout
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Пример PyQt5 QRadioButton")
layout = QVBoxLayout()
label = QLabel("Выберите вариант:")
layout.addWidget(label)
radio1 = QRadioButton("Вариант 1")
radio2 = QRadioButton("Вариант 2")
radio3 = QRadioButton("Вариант 3")
layout.addWidget(radio1)
layout.addWidget(radio2)
layout.addWidget(radio3)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Это создает три независимых переключателя. Чтобы проверить, какой из них выбран, используйте метод isChecked()
.
2. Метод setChecked
Программное управление выбором переключателя с помощью setChecked(True)
или снятие выбора с помощью setChecked(False)
.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QRadioButton, QVBoxLayout, QPushButton
# ... (предыдущий код) ...
button = QPushButton("Выбрать Вариант 2")
button.clicked.connect(lambda: radio2.setChecked(True))
layout.addWidget(button)
# ... (остальной код) ...
Это добавляет кнопку, которая выбирает «Вариант 2» при нажатии.
3. Создание групп переключателей
Для взаимно исключающего выбора используйте QButtonGroup
. Это гарантирует, что одновременно может быть выбран только один переключатель в группе.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QRadioButton, QVBoxLayout, QButtonGroup
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Пример группы PyQt5 QRadioButton")
layout = QVBoxLayout()
label = QLabel("Выберите вариант:")
layout.addWidget(label)
button_group = QButtonGroup()
radio1 = QRadioButton("Вариант 1")
radio2 = QRadioButton("Вариант 2")
radio3 = QRadioButton("Вариант 3")
button_group.addButton(radio1, 1)
button_group.addButton(radio2, 2)
button_group.addButton(radio3, 3)
layout.addWidget(radio1)
layout.addWidget(radio2)
layout.addWidget(radio3)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
4. Обработка выбора пользователя
Эффективная обработка выбора пользователя с помощью сигнала buttonClicked
:
button_group.buttonClicked.connect(lambda button: print(f"Выбран вариант: {button_group.id(button)}"))
Это выводит ID (назначенный при добавлении в группу) выбранной кнопки. Замените инструкцию print
на нужное вам действие.
Этот улучшенный подход позволяет избежать ручного проверки состояния каждой кнопки и обеспечивает более надежное и организованное решение для управления выбором переключателей в ваших приложениях PyQt5.