PyQt - Widget QComboBox

UN QComboBoxEl objeto presenta una lista desplegable de elementos para seleccionar. Se necesita un espacio de pantalla mínimo en el formulario requerido para mostrar solo el elemento seleccionado actualmente.

Se puede configurar un cuadro combinado para que sea editable; también puede almacenar objetos de mapa de píxeles. Los siguientes métodos se utilizan comúnmente:

A continuación se muestran los métodos de QComboBox más utilizados.

No Señor. Métodos y descripción
1

addItem()

Agrega cadena a la colección

2

addItems()

Agrega elementos en un objeto de lista

3

Clear()

Elimina todos los elementos de la colección.

4

count()

Recupera el número de elementos de la colección.

5

currentText()

Recupera el texto del elemento seleccionado actualmente

6

itemText()

Muestra texto que pertenece a un índice específico

7

currentIndex()

Devuelve el índice del artículo seleccionado

8

setItemText()

Cambia el texto del índice especificado

Señales QComboBox

No Señor. Métodos y descripción
1

activated()

Cuando el usuario elige un artículo

2

currentIndexChanged()

Siempre que el usuario cambie el índice actual o mediante programación

3

highlighted()

Cuando un elemento de la lista está resaltado

Ejemplo

Veamos cómo se implementan algunas características del widget QComboBox en el siguiente ejemplo.

Los elementos se agregan a la colección individualmente mediante el método addItem () o los elementos en un objeto List mediante el método addItems ().

self.cb.addItem("C++")
self.cb.addItems(["Java", "C#", "Python"])

El objeto QComboBox emite la señal currentIndexChanged (). Está conectado al método selectionchange ().

Los elementos de un cuadro combinado se enumeran utilizando el método itemText () para cada elemento. Se accede a la etiqueta que pertenece al elemento elegido actualmente mediante el método currentText ().

def selectionchange(self,i):
   print "Items in the list are :"
	
   for count in range(self.cb.count()):
      print self.cb.itemText(count)
   print "Current index",i,"selection changed ",self.cb.currentText()

El código completo es el siguiente:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class combodemo(QWidget):
   def __init__(self, parent = None):
      super(combodemo, self).__init__(parent)
      
      layout = QHBoxLayout()
      self.cb = QComboBox()
      self.cb.addItem("C")
      self.cb.addItem("C++")
      self.cb.addItems(["Java", "C#", "Python"])
      self.cb.currentIndexChanged.connect(self.selectionchange)
		
      layout.addWidget(self.cb)
      self.setLayout(layout)
      self.setWindowTitle("combo box demo")

   def selectionchange(self,i):
      print "Items in the list are :"
		
      for count in range(self.cb.count()):
         print self.cb.itemText(count)
      print "Current index",i,"selection changed ",self.cb.currentText()
		
def main():
   app = QApplication(sys.argv)
   ex = combodemo()
   ex.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

El código anterior produce la siguiente salida:

Los elementos de la lista son:

C
C++
Java
C#
Python
Current selection index 4 selection changed Python