Saltar a contenido

Campos numéricos QSpinBox y QDoubleSpinBox

A diferencia de los campos de texto, los numéricos fuerzan al usuario a escribir números y proveen métodos para su control. Encontramos para almacenar enteros y decimales, empecemos por los enteros:

from PySide6.QtWidgets import QApplication, QMainWindow, QSpinBox
from PySide6.QtCore import QSize, Qt
import sys


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # creamos un campo numérico entero
        numero = QSpinBox()
        self.setCentralWidget(numero)

        # Probamos algunas opciones
        numero.setMinimum(0)
        numero.setMaximum(10)
        numero.setRange(0, 10)
        numero.setSingleStep(1)

        # Probamos algunas señales
        numero.valueChanged.connect(self.valor_cambiado)

    def valor_cambiado(self, numero):
        # al presionar enter recuperamos el texto a partir del widget central
        print("Valor cambiado ->", numero)

Los campos numéricos permiten establecer prefijos y sufijos, útiles para manejar monedas y medidas:

numero.setPrefix("$")
numero.setSuffix("%")

En cuanto a los decimales son exactamente lo mismo pero utilizando el widget QDoubleSpinBox:

  • QSpinBox -> QDoubleSpinBox
  • numero = QSpinBox() -> numero = QDoubleSpinBox()
  • numero.setSingleStep(1) -> numero.setSingleStep(0.5)

En ambos widgets podemos establecer un valor por defecto con el método setValue y recuperarlo con value:

# Establecer y recuperar el valor
numero.setValue(3.14)
print(numero.value())

Con esto acabamos el repaso de los widgets básicos para formularios.

Existen muchos otros widgets para realizar todo tipo de tareas. Descubriremos algunos de ellos más adelante, pero si queréis una referencia completa lo mejor es buscar en la documentación de qt las clases heredadas de QWidget.


Última edición: 22 de Marzo de 2021