PyQt - Widget QRadioButton

UMA QRadioButtonobjeto de classe apresenta um botão selecionável com um rótulo de texto. O usuário pode selecionar uma das várias opções apresentadas no formulário. Esta classe é derivada da classe QAbstractButton.

Os botões de opção são autoexclusivos por padrão. Portanto, apenas um dos botões de opção na janela pai pode ser selecionado por vez. Se um for selecionado, o botão selecionado anteriormente é automaticamente desmarcado. Os botões de rádio também podem ser colocados em umQGroupBox ou QButtonGroup para criar mais de um campo selecionável na janela pai.

Os métodos listados a seguir da classe QRadioButton são os mais comumente usados.

Sr. Não. Métodos e Descrição
1

setChecked()

Altera o estado do botão de opção

2

setText()

Define o rótulo associado ao botão

3

text()

Recupera a legenda do botão

4

isChecked()

Verifica se o botão está selecionado

O sinal padrão associado ao objeto QRadioButton é toggled (), embora outros sinais herdados da classe QAbstractButton também possam ser implementados.

Exemplo

Aqui, dois botões de opção mutuamente exclusivos são construídos em uma janela de nível superior.

O estado padrão de b1 é definido como verificado pela instrução -

Self.b1.setChecked(True)

O sinal toggled () de ambos os botões é conectado à função btnstate (). O uso de lambda permite que a fonte do sinal seja passada para a função como um argumento.

self.b1.toggled.connect(lambda:self.btnstate(self.b1))
self.b2.toggled.connect(lambda:self.btnstate(self.b2))

A função btnstate () verifica o estado do botão que emite o sinal toggled ().

if b.isChecked() == True:
      print b.text()+" is selected"
   else:
      print b.text()+" is deselected"
		
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Radiodemo(QWidget):

   def __init__(self, parent = None):
      super(Radiodemo, self).__init__(parent)
		
      layout = QHBoxLayout()
      self.b1 = QRadioButton("Button1")
      self.b1.setChecked(True)
      self.b1.toggled.connect(lambda:self.btnstate(self.b1))
      layout.addWidget(self.b1)
		
      self.b2 = QRadioButton("Button2")
      self.b2.toggled.connect(lambda:self.btnstate(self.b2))

      layout.addWidget(self.b2)
      self.setLayout(layout)
      self.setWindowTitle("RadioButton demo")
		
   def btnstate(self,b):
	
      if b.text() == "Button1":
         if b.isChecked() == True:
            print b.text()+" is selected"
         else:
            print b.text()+" is deselected"
				
      if b.text() == "Button2":
         if b.isChecked() == True:
            print b.text()+" is selected"
         else:
            print b.text()+" is deselected"
				
def main():

   app = QApplication(sys.argv)
   ex = Radiodemo()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

O código acima produz a seguinte saída -

Button1 is deselected
Button2 is selected
Button2 is deselected
Button1 is selected