Ejemplo 2 - QPushButton, QLabel, QFrame, QComboBox y QLineEdit¶
Este ejemplo muestra cómo usar botones, labels, frames, combobox y line edit para entrada de texto. Los frames som QWidgets contenedores que permiten organizar otros QWidgets dentro de ellos. Los combobox permiten tener una lista de opciones predeterminada o agregar más elementos a la lista, para después seleccionar una de todas las opciones. Los line edit son entradas de texto y los label son etiquetas.
Código¶
# -*- coding: utf-8 -*-
"""
Ejemplo de ventana básico con QLabel, QFrame, QLineEdit, QComboBox y QPushButton
"""
#importamos las librerías necesarias
import sys
from PyQt5 import QtWidgets, uic
#Carga la interfaz gráfica y conecta los botones
class Ventana(QtWidgets.QMainWindow):
'''Esta es la clase principal'''
#Inicializamos la ventana y conectamos los botones
def __init__(self, padre=None):
#Inicializa la ventana
QtWidgets.QMainWindow.__init__(self, padre)
uic.loadUi("ejemplo2.ui",self) #Lee el archivo de QtDesigner
#Conectar botones a funciones
self.pushButton_2.clicked.connect(self.agregar)
self.pushButton.clicked.connect(self.mostrar)
#Agregar valores iniciales al QCombobox
for i in range(20):
self.comboBox.insertItem(self.comboBox.count(),
"Elemento {}".format(i))
def agregar(self):
if self.lineEdit.text() != "":
self.comboBox.insertItem(self.comboBox.count(),
self.lineEdit.text())
self.lineEdit.clear()
else:
pass
def mostrar(self):
self.label.setText("Selección "+self.comboBox.currentText())
# se crea la instancia de la aplicación
app = QtWidgets.QApplication(sys.argv)
# se crea la instancia de la ventana
miVentana = Ventana()
# se muestra la ventana
miVentana.show()
# se entrega el control al sistema operativo
sys.exit(app.exec_())
El resultado es el siguiente:
Los botones están conectados a las funciones mostrar
y agregar
. Como su nombre lo indica, la función mostrar
plasma un mensaje en el label que indica la actual selección del combobox. Por otro lado, la función agregar
valida que en el line edit efectivamente haya algún texto, de ser así, agrega el texto respectivo a la lista de opciones del combobox, como se observa en la imagen siguiente:
# -*- coding: utf-8 -*-
"""
Ejemplo de ventana básico con QLabel, QFrame, QLineEdit, QComboBox y QPushButton
"""
#importamos las librerías necesarias
import sys
from PyQt5 import QtWidgets, uic
#Carga la interfaz gráfica y conecta los botones
class Ventana(QtWidgets.QMainWindow):
'''Esta es la clase principal'''
#Inicializamos la ventana y conectamos los botones
def __init__(self, padre=None):
#Inicializa la ventana
QtWidgets.QMainWindow.__init__(self, padre)
uic.loadUi("ejemplo2.ui",self) #Lee el archivo de QtDesigner
En esta parte del código se importan las librerías, se inicializa la clase Ventana
y se lee el archivo .ui de QtDesigner.
#Conectar botones a funciones
self.pushButton_2.clicked.connect(self.agregar)
self.pushButton.clicked.connect(self.mostrar)
#Agregar valores iniciales al QCombobox
for i in range(20):
self.comboBox.insertItem(self.comboBox.count(),
"Elemento {}".format(i))
def agregar(self):
if self.lineEdit.text() != "":
self.comboBox.insertItem(self.comboBox.count(),
self.lineEdit.text())
self.lineEdit.clear()
else:
pass
def mostrar(self):
self.label.setText("Selección "+self.comboBox.currentText())
Luego, se definen las funciones mencionadas, agregar
y mostrar
, las cuales se conectan a ambos botones de la ventana. También se agregan los 20 valores iniciales al combobox. En esta parte, cabe mencionar que self.comboBox.count()
cuenta el número de elementos presentes en el combobox que, en este caso, se utiliza para asignar la posición donde se va a insertar el nuevo elemento en el combobox; es decir, pasar como parámetro a insertItem
el número de elementos de la lista significa que se insertará al final cada nuevo elemento (self.lineEdit.text())
.
# se crea la instancia de la aplicación
app = QtWidgets.QApplication(sys.argv)
# se crea la instancia de la ventana
miVentana = Ventana()
# se muestra la ventana
miVentana.show()
# se entrega el control al sistema operativo
sys.exit(app.exec_())
Finalmente, se crea la instancia de la clase Ventana
y se ejecuta la aplicación.