PyQt QRadioButton

Resumo : neste tutorial, você aprenderá como usar a QRadioButtonclasse PyQt para criar botões de opção.

Introdução ao QRadioButton PyQt

A QRadioButtonclasse permite criar um botão de opção com um rótulo:

QRadioButton(text[, parent=None])Linguagem de código:  Python  ( python )

Um botão de opção tem dois estados:

  • ativado (marcado)
  • desativado (desmarcado)

Normalmente, você usa botões de opção em um grupo. Um grupo de botões de opção oferece uma entre muitas opções.

Em um grupo de botões de opção, você pode marcar apenas um botão de opção por vez. Se você marcar outro botão de opção, o botão marcado anteriormente será desmarcado.

Por padrão, os botões de opção são autoexclusivos. Além disso, os botões de opção que pertencem ao mesmo widget pai são autoexclusivos.

Se quiser criar vários botões de opção exclusivos, você pode agrupá-los em vários QButtonGroupwidgets.

Um botão de opção emite o toggled() sinal quando é ligado ou desligado.

Se quiser acionar uma ação quando o estado do botão de opção mudar, você poderá conectar um slot ao toggled()sinal.

Dentro do slot, você pode usar isChecked()o método para verificar se o botão de opção está ligado ou desligado.

Exemplo de PyQt QRadioButton

O programa a seguir ilustra como criar um grupo de botões de opção:

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())Linguagem de código:  Python  ( python )

Saída:

Como funciona.

Primeiro, crie três botões de opção e conecte o método de atualização ao toggled()sinal de cada botão:

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)Linguagem de código:  Python  ( python )

Segundo, crie o rótulo de resultado que exibirá qual botão de opção está marcado:

self.result_label = QLabel('', self)Linguagem de código:  Python  ( python )

Como precisamos fazer referência a result_labelem outro método, tornamos isso um atributo da classe.

Terceiro, defina o update()método:

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()}')Linguagem de código:  Python  ( python )

No update()método:

  1. Encontre o botão de opção que enviou o sinal alternado.
  2. Verifique se o botão de opção está marcado chamando o isChecked()método.
  3. Atualize o rótulo do resultado. Para obter o rótulo de texto do botão de opção, usamos o text()método.

Resumo

  • Use a classe PyQt QRadioButtonpara criar um botão de opção.
  • Os botões de opção que pertencem ao mesmo pai pertencem a um grupo autoexclusivo.
  • Conecte-se ao toggled()sinal para acionar uma ação quando o botão de opção for ligado ou desligado.
  • Use o isChecked()método para ver se o botão de opção está ativado.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *