tutorial español python pyqt pyqt4 qcombobox

qt designer python tutorial español pdf



En pyqt, ¿cómo agrego elementos en un cuadro combinado? (2)

Necesito ayuda para agregar algunos elementos a un combBox . Por lo tanto, tengo dos combBox combinados, uno de ellos se llena con el otro dependiendo del elemento seleccionado.

Mi pregunta es que, usando el additem para los nuevos elementos, funciona, pero si elijo otra opción para el combobox , agrega los nuevos elementos pero los elementos anteriores se han ido, y hay elementos en blanco debajo de los nuevos.

Pensé que cada vez que elegía una nueva opción del primer combobox , para borrar el contenido del segundo combobox , usé el clear() en el segundo, pero no funcionó.

Así es como lo pensé:

self.comboBox_2.clear() for index,i in enumerate(list1): self.comboBox_2.addItem(_fromUtf8("")) self.comboBox_2.setItemText(index+2, QtGui.QApplication.translate("Dialog", i, None, QtGui.QApplication.UnicodeUTF8))

Lo anterior es parte de una función que se ejecuta cuando cambia el primer combobox .



Suponiendo que list1 es una lista de cadenas, puede simplemente agregarlas todas a la vez utilizando el método addItems :

self.comboBox_2.clear() self.comboBox_2.addItems(list1)

Tenga en cuenta que probablemente está utilizando QApplication.translate de forma incorrecta en su ejemplo. Si desea hacer posible que las cadenas en la list1 se traduzcan a un idioma diferente, debe hacerlo al crear la lista y utilizar literales de cadena .

Por ejemplo:

list1 = [ self.tr(''First Item''), self.tr(''Second Item''), self.tr(''Third Item''), ]

También tenga en cuenta que la función _fromUtf8 solo es realmente útil si está utilizando literales de cadena que contienen caracteres que no son ASCII en su código; de lo contrario, es básicamente un no-op.

EDITAR

Si su lista contiene, digamos, tuplas de pixmaps y texto, entonces puede usar algo como esto:

self.comboBox_2.clear() for pixmap, text in list1: self.comboBox_2.addItem(QIcon(pixmap), text)