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())

Выход:

Создание группы переключателей с PyQt QRadioButton

Как это работает.

  • Сначала создайте три переключателя и подключите метод обновления к сигналу 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():

  1. Найдите переключатель, который отправил сигнал переключения.
  2. Проверьте, отмечен ли переключатель, вызвав метод isChecked().
  3. Обновите метку результата. Чтобы получить текстовую метку кнопки-переключателя, мы используем метод text().
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *