En este capítulo del tutorial de Python 3 más PyQt5, veremos un ejemplo con el objeto List Widget, este objeto nos permite crear una lista de items, los cuales pueden ser seleccionados por el usuario.
En el capítulo veremos como obtener los items seleccionados por el usuario, como agregar nuevos items y como eliminar items.
El ejemplo lo basaremos en un archivo ui creado con Designer llamado listwidget.ui
- Agregaremos un objeto List Widget con 4 items: Python - PHP - Perl - Ruby
- Al objeto List Widget le daremos el nombre lenguajes y haremos que sea posible la multiselección de items, modificando la propiedad selectionMode a MultiSelection e indicaremos un item seleccionado por defecto, modificando la propiedad currentRow con el valor 0, para seleccionar al item Python por defecto.
- Agregar un objeto Push Button con el texto "Enviar" y el nombre boton.
- Agregar un objeto Label con el nombre labelMensaje y le quitaremos el texto que viene por defecto.
import sys from PyQt5.QtWidgets import QApplication, QDialog from PyQt5 import uic class Dialogo(QDialog): def __init__(self): QDialog.__init__(self) uic.loadUi("listwidget.ui", self) self.boton.clicked.connect(self.getItems) #Agregar un nuevo item #self.lenguajes.addItem("Visual Basic") #Eliminar un item #self.deleteItem("Python") def deleteItem(self, label): #Array para almacenar cada item objeto items = [] #Recorrer item a item for x in range(self.lenguajes.count()): item = self.lenguajes.item(x) items.append(item) #este array almacena el texto de cada item labels = [i.text() for i in items] #Recorrer item a item el array labels for x in range(len(labels)): #Si el item existe if labels[x] == label: #Eliminar item = self.lenguajes.indexFromItem(self.lenguajes.item(x)) self.lenguajes.model().removeRow(item.row()) def getItems(self): items = self.lenguajes.selectedItems() #Array para guardar los items seleccionados selected = [] for x in range(len(items)): selected.append(self.lenguajes.selectedItems()[x].text()) self.labelLenguajes.setText("Seleccionados: " + "-".join(selected)) app = QApplication(sys.argv) dialogo = Dialogo() dialogo.show() app.exec_()
No hay comentarios:
Publicar un comentario