В этом уроке вы узнаете, как использовать класс PyQt QRadioButton для создания переключателей в Python.
Что такое PyQt QRadioButton
Класс QRadioButton позволяет создать радиокнопку с меткой:
QRadioButton(text[, parent=None])
Переключатель имеет два состояния:
- on (включен)
- off (выключен)
Обычно переключатели используются в группе. Группа переключателей предоставляет вам один из многих вариантов. В группе можно нажать только один переключатель за раз. Если нажать другой, то ранее отмеченная кнопка будет снята.
По умолчанию переключатели являются автоисключающими, включая те, которые принадлежат одному и тому же родительскому виджету.
Если вы хотите создать несколько эксклюзивных переключателей, вы можете сгруппировать их в несколько виджетов QButtonGroup.
Радиокнопка издает сигнал toggled() при включении или выключении. Если вы хотите, чтобы при изменении состояния переключателя выполнялось действие, вы можете подключить слот к сигналу toggled().
Внутри слота вы можете использовать метод isChecked(), чтобы проверить, включена или выключена кнопка-переключатель.
Пример PyQt QRadioButton
Следующая программа иллюстрирует, как создать группу переключателей:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout
from PyQt6.QtCore import Qt
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('PyQt QRadioButton')
self.setMinimumWidth(300)
# create a grid layout
layout = QVBoxLayout()
self.setLayout(layout)
label = QLabel('Please select a platform:', self)
rb_android = QRadioButton('Android', self)
rb_android.toggled.connect(self.update)
rb_ios = QRadioButton('iOS', self)
rb_ios.toggled.connect(self.update)
rb_windows = QRadioButton('Windows', self)
rb_windows.toggled.connect(self.update)
self.result_label = QLabel('', self)
layout.addWidget(label)
layout.addWidget(rb_android)
layout.addWidget(rb_ios)
layout.addWidget(rb_windows)
layout.addWidget(self.result_label)
# show the window
self.show()
def update(self):
# get the radio button the send the signal
rb = self.sender()
# check if the radio button is checked
if rb.isChecked():
self.result_label.setText(f'You selected {rb.text()}')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Выход:

Как это работает.
- Сначала создайте три переключателя и подключите метод обновления к сигналу toggled() каждой кнопки:
rb_android = QRadioButton('Android', self)
rb_android.toggled.connect(self.update)
rb_ios = QRadioButton('iOS', self)
rb_ios.toggled.connect(self.update)
rb_windows = QRadioButton('Windows', self)
rb_windows.toggled.connect(self.update)
Во-вторых, создайте метку результата, которая будет отображать, какой переключатель отмечен:
- self.result_label = QLabel(», self)
Поскольку нам необходимо ссылаться на result_label в другом методе, мы делаем его атрибутом класса.
- В-третьих, определите метод update():
def update(self):
# get the radio button the send the signal
rb = self.sender()
# check if the radio button is checked
if rb.isChecked():
self.result_label.setText(f'You selected {rb.text()}')
В методе update():
- Найдите переключатель, который отправил сигнал переключения.
- Проверьте, отмечен ли переключатель, вызвав метод isChecked().
- Обновите метку результата. Чтобы получить текстовую метку кнопки-переключателя, мы используем метод text().
