Qt Check Box (QCheckBox).

En este tutorial explicamos que es un Qt Check Box, como se agrega a la interfaz, como configurarlo y como sabemos si está marcado o no. Lo haremos para Python, con la librería Pyqt5, el CheckBox lo crearemos en Qt designer.

Un check box en pyqt es un widget que nos permite marcar o desmarcar una opción y efectuar una operación distinta si la opción está marcada o no.

Resumen QCheckBox.

Para saber si está marcado usamos:

 bNocturno = self.ui.chNocturno.isChecked()

Notas:

  • La variable bNocturno será falsa o verdadera.
  • Los comandos ui, son debidos a la forma de trabajar, estamos buscando los elementos de la UI dentro del mismo método donde la llamamos.
  • chNocturno es el nombre del Checkbox en la UI.

Para detectar cuando se presionó:

self.ui.chAlarma.clicked.connect(self.chClicked)

def chClicked(self):
    self.ui.txtSeleccion.setText("Click en Alarma")

 

Agregando el Qt Check Box en Qt Designer (QCheckBox)

La interfaz la creamos con Qt designer, luego la impostamos a Python para crear la lógica.

Podemos crear la interfaz en Python, pero es más tedioso y tardado. Mientas que Qt designer está diseñando específicamente para crear la interfaz y poder convertirla fácilmente a Python.

Abrimos Qt Desginer, creamos una nueva ventana principal “Main Window”, luego a la derecha nos aparecen todos los widgets disponibles. Aquí buscamos la pestaña de Buttons y arrastramos el Check Box a la ventana de en medio, como se ve en la siguiente imagen.

QCheckBox

Del lado derecho podremos configurar un poco más el qcheckbox, tanto su tamaño como contenido. En este caso el texto del checkbox será “Modo nocturno”.

Además si damos click derecho sobre el qcheckbox, nos aparecerán opciones para poder cambiar colores y tener un checkbox más personalizado.

Así queda nuestra interfaz:

Qt Check box

  • Tenemos 2 checkbox, uno para el modo nocturno y otro para la alarma.
  • Tenemos un Label, el cual mostrará cual de los checkbox esta seleccionado
  • Y por último tenemos un botón. Cuando lo presionemos nos mostrara en el label cuales chechbox están seleccionados.

Los nombres de los elementos son:

  • QCheckbox Modo nocturno, chNocturno
  • QCheckbox Alarma, chAlarma.
  • Botón para revisar, btnRevisar.
  • Label para mostrar cual esta seleccionado, txtSeleccion.

La guardamos con el nombre de “check_text.ui

Convertir la interfaz a Python.

Una vez con la UI lista, vamos a convertir el archivo a Python.

Esto lo hacemos de la siguiente manera.

Primero abrimos la consola CMD, podemos ubicarnos en la carpeta donde guardamos ek archivo “check_text.ui”. Luego en un lugar vacío damos click derecho mientras presionamos la tecla Shift, en las opciones seleccionamos la que dice “Abrir ventana de comandos aquí”.

Se abrirá la CMD ubicada en la carpeta. Y escribimos el siguiente código:

Pyuic5 chack_text.ui –o check_ui.py

Con esto estamos convirtiendo la ui a un archivo “.py” para leerlo en python.

 

Abrir la UI en Python.

Lo siguiente es abrir la UI en Python, cosa que ya hemos hecho en tutoriales anteriores. Aquí te dejo el código, la ui se importa como si fuera una librería.

from check_ui import *
from PyQt5 import QtWidgets
import sys

class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)


app= QtWidgets.QApplication([])
application = mywindow()
application.show()
sys.exit(app.exec())

Lo siguiente es darle la función al botón y detectar si esta marcado algún checkbox.

Saber si está marcado o no el QCheckBox.

Por ultimo vamos a determinar si el checkbox está marcado o no. Para esto usamos el comando “isChecked()”. El cual nos regresará verdadero o falso.

Pyqt checkbox

Recuerda los nombres de los elementos de la UI:

Los nombres de los elementos son:

  • Check box Modo nocturno, chNocturno
  • Check box Alarma, chAlarma.
  • Botón para revisar, btnRevisar.
  • Label para mostrar cual esta seleccionado, txtSeleccion.
from check_ui import *
from PyQt5 import QtWidgets
import sys

class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.btnRevisar.clicked.connect(self.btnClicked)

    def btnClicked(self):
        bAlarma = self.ui.chAlarma.isChecked()
        bNocturno = self.ui.chNocturno.isChecked() 

        if(bAlarma and bNocturno):
            self.ui.txtSeleccion.setText("Ambos seleccionados")
        elif(bAlarma):
            self.ui.txtSeleccion.setText("Alarma activada")
        elif(bNocturno):
            self.ui.txtSeleccion.setText("Modo noctueno activado")
        else:
            self.ui.txtSeleccion.setText("No selección")


app= QtWidgets.QApplication([])
application = mywindow()
application.show()
sys.exit(app.exec())

Podemos ver que cuando el botón se presiona llamamos a la función “btnClicked()”. Dentro de esta función revisamos si los qcheckbox están seleccionados o no. Y mostramos un texto en el Label según cual este seleccionado.

Saber cuándo el usuario da click sobre el Qt Check Box.

Podemos detectar cuando el usuario presiona algún check box con el comando “cliked” y conectarlo a alguna función con el comando “connect”. Exactamente igual como le hicimos con el botón.

Clicked qt checkbox

En el siguiente código mostraremos el texto “Click en Alarma” cuando se presione el Chec box de la alarma (chAlarma).

from check_ui import *
from PyQt5 import QtWidgets
import sys
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.btnRevisar.clicked.connect(self.btnClicked)
        self.ui.chAlarma.clicked.connect(self.chClicked)

    def btnClicked(self):
        bAlarma = self.ui.chAlarma.isChecked()
        bNocturno = self.ui.chNocturno.isChecked()

        if(bAlarma and bNocturno):
            self.ui.txtSeleccion.setText("Ambos seleccionados")
        elif(bAlarma):
            self.ui.txtSeleccion.setText("Alarma activada")
        elif(bNocturno):
            self.ui.txtSeleccion.setText("Modo noctueno activado")
        else:
            self.ui.txtSeleccion.setText("No selección")

        def chClicked(self):
            self.ui.txtSeleccion.setText("Click en Alarma")

app= QtWidgets.QApplication([])
application = mywindow()
application.show()
sys.exit(app.exec())

Para más tutoriales de Python ve a la sección de Python.

Algunos tutoriales que te podrían interesar.

Qt push button color (qpushbutton color).

Qt Designer python.