PyQt QRadioButton в Python — как использовать
В этом уроке вы узнаете, как использовать класс 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().