PyQt - Widget QComboBox

UN QComboBoxoggetto presenta un elenco a discesa di elementi tra cui selezionare. Richiede uno spazio minimo sullo schermo nel modulo richiesto per visualizzare solo l'elemento attualmente selezionato.

Una casella combinata può essere impostata per essere modificabile; può anche memorizzare oggetti pixmap. I seguenti metodi sono comunemente usati:

Di seguito sono riportati i metodi più comunemente usati di QComboBox.

Sr.No. Metodi e descrizione
1

addItem()

Aggiunge una stringa alla raccolta

2

addItems()

Aggiunge elementi in un oggetto elenco

3

Clear()

Elimina tutti gli elementi nella raccolta

4

count()

Recupera il numero di elementi nella raccolta

5

currentText()

Recupera il testo dell'elemento attualmente selezionato

6

itemText()

Visualizza il testo che appartiene a un indice specifico

7

currentIndex()

Restituisce l'indice dell'elemento selezionato

8

setItemText()

Modifica il testo dell'indice specificato

Segnali QComboBox

Sr.No. Metodi e descrizione
1

activated()

Quando l'utente sceglie un elemento

2

currentIndexChanged()

Ogni volta che l'indice corrente viene modificato dall'utente oa livello di codice

3

highlighted()

Quando un elemento nell'elenco è evidenziato

Esempio

Vediamo come sono implementate alcune funzionalità del widget QComboBox nel seguente esempio.

Gli elementi vengono aggiunti nella raccolta individualmente dal metodo addItem () o gli elementi in un oggetto List dal metodo addItems ().

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

L'oggetto QComboBox emette il segnale currentIndexChanged (). È connesso al metodo selectionchange ().

Gli elementi in una casella combinata vengono elencati utilizzando il metodo itemText () per ogni elemento. Si accede all'etichetta appartenente all'elemento attualmente scelto con il metodo 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()

L'intero codice è il seguente:

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

Il codice precedente produce il seguente output:

Gli elementi nell'elenco sono:

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