PyQt - Widget QCheckBox

Uma caixa retangular antes do rótulo do texto aparece quando um QCheckBoxobjeto é adicionado à janela principal. Assim como QRadioButton, também é um botão selecionável. Seu uso comum é em um cenário em que o usuário é solicitado a escolher uma ou mais das opções disponíveis.

Ao contrário dos botões de rádio, as caixas de seleção não são mutuamente exclusivas por padrão. Para restringir a escolha a um dos itens disponíveis, as caixas de seleção devem ser adicionadas ao QButtonGroup.

A tabela a seguir lista os métodos da classe QCheckBox comumente usados ​​-

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

setChecked()

Altera o estado do botão da caixa de seleçã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

5

setTriState()

Fornece nenhum estado de mudança para a caixa de seleção

Cada vez que uma caixa de seleção é marcada ou desmarcada, o objeto emite o sinal stateChanged ().

Exemplo

Aqui, dois objetos QCheckBox são adicionados a um layout horizontal. Seu sinal stateChanged () é conectado à função btnstate (). O objeto de origem do sinal é passado para a função usando lambda.

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

A função isChecked () é usada para verificar se o botão está marcado ou não.

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

O código completo é o seguinte -

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

Conforme mencionado anteriormente, os botões checkBox podem ser mutuamente exclusivos adicionando-os ao objeto QButtonGroup.

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

Objeto QButtonGroup, fornece recipiente abstrato para botões e não possui uma representação visual. Ele emite o sinal buttonCliked () e envia a referência do objeto Button para a função de slot btngroup ().

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

A função btngroup () exibe a legenda da caixa de seleção clicada.

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