PyQt - Widget QRadioButton

UN QRadioButtonEl objeto de clase presenta un botón seleccionable con una etiqueta de texto. El usuario puede seleccionar una de las muchas opciones presentadas en el formulario. Esta clase se deriva de la clase QAbstractButton.

Los botones de opción son autoexclusivos de forma predeterminada. Por lo tanto, solo se puede seleccionar uno de los botones de opción en la ventana principal a la vez. Si se selecciona uno, el botón previamente seleccionado se deselecciona automáticamente. Los botones de radio también se pueden colocar en unQGroupBox o QButtonGroup para crear más de un campo seleccionable en la ventana principal.

Los siguientes métodos enumerados de la clase QRadioButton son los más utilizados.

No Señor. Métodos y descripción
1

setChecked()

Cambia el estado del botón de opción

2

setText()

Establece la etiqueta asociada con el botón

3

text()

Recupera el título del botón

4

isChecked()

Comprueba si el botón está seleccionado

La señal predeterminada asociada con el objeto QRadioButton se conmuta (), aunque también se pueden implementar otras señales heredadas de la clase QAbstractButton.

Ejemplo

Aquí se construyen dos botones de radio mutuamente excluyentes en una ventana de nivel superior.

El estado predeterminado de b1 se establece como verificado por la declaración -

Self.b1.setChecked(True)

La señal conmutada () de ambos botones está conectada a la función btnstate (). El uso de lambda permite que la fuente de la señal se pase a la función como argumento.

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

La función btnstate () comprueba el estado del botón que emite la señal 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()

El código anterior produce la siguiente salida:

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