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
.
Hay algunas demostraciones / ejemplos simples y fáciles de leer aquí https://github.com/shuge/Enjoy-Qt-Python-Binding ,
QComboBox
y encontrará una demostración sobre cómo usar QComboBox
básico y personalice su ícono de icono.
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)