En pyqt ¿cómo puedo agregar elementos de un combobox?

Necesito un poco de ayuda de añadir algunos elementos a una combBox.Por lo tanto,tengo dos comboboxes,uno combobox rellena el otro dependiendo del elemento seleccionado.

Mi pregunta es que,utilizando additem para artículos nuevos,funciona,pero si puedo elegir 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 seleccione una nueva opción desde el primer combobox,para borrar el contenido de la segunda combobox,he utilizado el clear() en el segundo,pero no funcionó.

Que es como yo pensaba :

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))

El de arriba es parte de una función que se ejecuta cuando el primer combobox cambios.

OriginalEl autor GiannisIordanou | 2011-12-07

2 Kommentare

  1. 32

    Suponiendo list1 es una lista de cadenas, entonces usted puede simplemente añadir todos a la vez, el uso de la addItems método:

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

    Tenga en cuenta que usted probablemente se está utilizando QApplication.translate en el camino equivocado en su ejemplo. Si usted quiere hacer lo posible para que las cadenas en list1 a ser traducido a un idioma diferente, usted debe hacer que cuando se crear de la lista, y el uso literales de cadena.

    Por ejemplo:

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

    También tenga en cuenta que el _fromUtf8 función sólo es realmente útil si usted está usando literales de cadena que contiene caracteres no ascii en el código – de lo contrario, se trata básicamente de un no-op.

    EDITAR

    Si la lista contiene, digamos, de tuplas de pixmaps de texto y, a continuación, puede usar algo como esto:

    self.comboBox_2.clear()
    for pixmap, text in list1:
        self.comboBox_2.addItem(QIcon(pixmap), text)
    Gracias,funcionó.Mi bucle for iba a funcionar,sin importar si hay otra manera ? Tengo la intención de poner algunos iconos para cada cadena en la lista,es por eso que pensé en el bucle.

    OriginalEl autor ekhumoro

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea