PyQt - Widget QCheckBox

Aparece un cuadro rectangular antes de la etiqueta de texto cuando QCheckBoxEl objeto se agrega a la ventana principal. Al igual que QRadioButton, también es un botón seleccionable. Su uso común es en un escenario en el que se le pide al usuario que elija una o más de las opciones disponibles.

A diferencia de los botones de opción, las casillas de verificación no se excluyen mutuamente de forma predeterminada. Para restringir la elección a uno de los elementos disponibles, las casillas de verificación deben agregarse a QButtonGroup.

La siguiente tabla enumera los métodos de clase QCheckBox más utilizados:

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

setChecked()

Cambia el estado del botón de casilla de verificació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

5

setTriState()

No proporciona ningún estado de cambio a la casilla de verificación

Cada vez que se marca o borra una casilla de verificación, el objeto emite la señal stateChanged ().

Ejemplo

Aquí, se agregan dos objetos QCheckBox a un diseño horizontal. Su señal stateChanged () está conectada a la función btnstate (). El objeto fuente de la señal se pasa a la función mediante lambda.

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

La función isChecked () se utiliza para comprobar si el botón está marcado o no.

if b.text() == "Button1":
   if b.isChecked() == True:
      print b.text()+" is selected"
   else:
      print b.text()+" is deselected"

El código completo es el siguiente:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class checkdemo(QWidget):
   def __init__(self, parent = None):
      super(checkdemo, self).__init__(parent)
      
      layout = QHBoxLayout()
      self.b1 = QCheckBox("Button1")
      self.b1.setChecked(True)
      self.b1.stateChanged.connect(lambda:self.btnstate(self.b1))
      layout.addWidget(self.b1)
		
      self.b2 = QCheckBox("Button2")
      self.b2.toggled.connect(lambda:self.btnstate(self.b2))

      layout.addWidget(self.b2)
      self.setLayout(layout)
      self.setWindowTitle("checkbox 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 = checkdemo()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

Como se mencionó anteriormente, los botones checkBox pueden hacerse mutuamente excluyentes agregándolos al objeto QButtonGroup.

self.bg = QButtonGroup()
self.bg.addButton(self.b1,1)
self.bg.addButton(self.b2,2)

El objeto QButtonGroup, proporciona un contenedor abstracto para botones y no tiene una representación visual. Emite la señal buttonCliked () y envía la referencia del objeto Button a la función de ranura btngroup ().

self.bg.buttonClicked[QAbstractButton].connect(self.btngroup)

La función btngroup () muestra el título de la casilla de verificación seleccionada.

def btngroup(self,btn):
   print btn.text()+" is selected"