Foros Python

Versión completa: Evitar duplicados en un combo box en Qt
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola a todos



 Llevo poco tiempo con Python y tengo la siguiente duda con los combo box

Quiero evitar valores duplicados al llenar un combo desde un bucle while o for


Os detallo:

Cargo un combo box desde un bucle while


listaNom = ["Enrique","Toni","Eva","Toni","Eva","Enrique"]

i = 0

while i < len(listaNom):

self.combo_box.addItem(listaNom[i])

i = i + 1

self.combo_box.setCurrentIndex(-1)


El combo se llena con todos los valores de la lista, aun teniendo en false self.combo_box.setDuplicatesEnabled(False),
cuando yo esperaba solo los valores únicos


Sin embargo, si añado valores "manualmente" desde el formulario en este mismo combo
si que filtra y no añade un valor que ya existe.



A ver si alguien puede ayudarme y dar algo de luz




Gracias
Hola, bienvenido.

La documentación de duplicatesEnabled indica que esa propiedad solo controla que el usuario no pueda añadir elementos duplicados, pero que es posible agregarlos programáticamente. Para evitar esto último en tu código en particular, podrías usar esto:

Código:
for nom in set(listaNom):
    self.combo_box.addItem(nom)

Saludos!
Hola Francisco


Antes de preguntar estuve mirando la documentación del QCombo Box  y ahí es donde descubrí la propiedad duplicatesEnabled, pero en el apartado Python, no en el de C++ que es que el tu comentas.

En este último si que está detallado, pero en el de Python tienes que tirar de imaginación. Para la próxima ya se donde tengo que mirar.

https://doc.qt.io/qtforpython/PySide2/Qt...tesEnabled




Tu  propuesta funciona perfectamente, así que  he conseguido lo que quería



Muy agradecido


Saludos
Me alegro, de nada. Efectivamente, con Qt siempre es mejor ojear la documentación de C++ Smile

Saludos