PyQT-5 Tutorial Widgets

Seguimos con la serie de tutoriales Python orientados a la creación de Interfaces Gráficas de Usuario (GUI) con PyQT 5, en este nos enfocaremos en ver algunos de los widgets más usados a la hora del desarrollo de las aplicaciones, como: QCheckBox, QComboBox, QDateEdit, QLineEdit, QLabel, QProgressBar, QPushButton, QSlider, entre otros.

checkbox pyqt5 tutorial pythonEl primer widget que veremos en este tutorial pyqt-5 será el QCheckBox este es un control bastante simple, el mismo puede tener tres estados, activo (seleccionado), inactivo (no seleccionado), o ninguno de los anteriores, un estado nulo, usamos este control para representar una variable booleana que puede ser: true, false o null.

def addCheckBox(self):
    # Crear el widget
    cbx = QCheckBox('Mostrar/Ocultar', self)
    # Cambiar estado del CheckBox puede ser: Qt.PartiallyChecked, Qt.Checked, Qt.Unchecked
    cbx.setCheckState(Qt.PartiallyChecked)
    # Responder al evento de cambio de estado
    cbx.stateChanged.connect(self.cbxChange)
    # Ubicar el control en la posicion (x, y)
    cbx.move(20, 20)

def cbxChange(self, state):
    print('CheckBox State: ', state)

QLabel QLineEditQLineEdit es un widget que le permite al usuario introducir una línea de texto, podemos obtener este texto usando en método QLineEdit.text() este control produce el evento textChanged cada vez que cambia en texto, usamos el método setPlaceHolderText() para establecer un texto que ayuda al usuario a saber qué información le está pidiendo nuestra aplicación.

def addLineEdit(self):
    # crea un texto no es editable
    lbl = QLabel('Nombre:', self)
    lbl.move(20, 52)

    # crea un widget que permite editar una linea de texto
    txt = QLineEdit(self)
    txt.move(72, 50)
    # establece un texto informativo
    txt.setPlaceholderText('Dime tu nombre')
    # evento producido cada vez que cambia el texto
    txt.textChanged.connect(self.textChange)
    # establece el foco en el widget
    txt.setFocus()
    # obtiene el texto escrito
    nombre = txt.text()

def textChange(self, text):
    print('El nuevo texto es: ', text)

QSlider QLCDNumberQSlider es un control que permite al usuario seleccionar un valor que se encuentre dentro de un rango determinado, lo usaremos en conjunto con un QLCDNumber para mostrar el valor actual, para establecer el rango de valores validos usamos el método QSlider.setRange(int, int), para obtener o establecer el valor usamos QSlider.value() y QSlider.setValue(int) respectivamente, para mostrar el valor actual conectamos el evento valueChanged que se produce cada vez que cambia el valor con el método QLCDNumber.display que muestra el valor en el widget.

def addSlider(self):
    sld = QSlider(Qt.Horizontal, self)
    # establecer posicion (x,y) y dimenciones (ancho, alto)
    sld.setGeometry(20, 80, 150, 30)
    # indicar rango de valores validos
    sld.setRange(50, 250)
    # establecer valor inicial
    sld.setValue(120)
    # evento producido cada vez que cambia el valor
    sld.valueChanged.connect(self.valChange)

    num = QLCDNumber(self)
    num.setGeometry(180, 80, 50, 30)
    # mostrar valor inicial
    num.display(sld.value())
    # cambiar valor QLCDNumber cuando cambiar QSlider
    sld.valueChanged.connect(num.display)

def valChange(self, value):
    print('QSlider value: ', value)

pyqt5 seleccionar fechaQCalendarWidget provee un calendario donde el usuario puede seleccionar una fecha, para darnos cuenta cuando un usuario seleccionar una nueva fecha manejamos el evento clicked en el obtenemos la fecha seleccionada por el usuario, este control tiene botones para navegar fácilmente por los diferentes años y meses, además podemos configura la información que deseamos mostrar y el formato de fecha.

def addCalendar(self):
    cal = QCalendarWidget(self)
    cal.setGridVisible(True)
    cal.clicked.connect(self.timeSelected)
    cal.move(300, 20)

def timeSelected(self, date):
    print('La Fecha es: ', date.toString())

QRadioButton QGroupBox PyQT-5QRadioButton este widget permite seleccionar una de varias opciones disponible en nuestra GUI, para seleccionar un QRadioButton mediante programación usaremos el método setChecked(bool) con True para seleccionarlo, False para lo contrario, disponemos también del método isChecked() para determinar si el control está o no seleccionado, el control QGroupBox lo usaremos simplemente para agrupar y organizar el widget.

def addRadioBoton(self):
    gbx = QGroupBox('Tu Lenguaje Favorito', self)
    gbx.setGeometry(20, 150, 185, 120)
    # crear tres QRadioButton
    radio1 = QRadioButton("C/C++")
    radio2 = QRadioButton("Python")
    radio3 = QRadioButton("Java")
    # agregar los widgets al layout vertical
    vbox = QVBoxLayout(self)
    vbox.addWidget(radio1)
    vbox.addWidget(radio2)
    vbox.addWidget(radio3)
    # establecer el layout del QGroupBox
    gbx.setLayout(vbox)
     
    # radio1.setChecked(True)
    # print(radio1.isChecked())

El widget QPushButton crea un botón sobre el que podemos hacer clic, manejamos el evento clicked para saber cuando el usuario pulsa sobre el botón, este control ya lo hemos visto en varios tutoriales anteriores, más adelantes seguiremos viendo otros controles. 

GitHub: Tutorial PyQT-5 Widgets

Comentarios

Temas relacionados

Entradas populares de este blog

tkinter Grid

Conectar SQL Server con Java

Controles y Contenedores JavaFX 8 - I

Histogramas OpenCV Python