UN Casella combinata è usato per selezionare un elemento da un elenco di elementi, proprio come il pulsante di opzione. Il QComboBox la classe di PyQt viene utilizzata per creare elenchi a discesa utilizzando lo script Python. Viene visualizzato un elenco di elementi che l'utente può selezionare. Gli elementi del ComboBox possono essere aggiunti, modificati e rimossi utilizzando lo script. È possibile selezionare più elementi come il pulsante CheckBox dall'elenco di elementi dal ComboBox, quindi si chiama ListBox. Questo tutorial mostra come usare QComboBox per creare un elenco a discesa in Python.
Metodi QComboBox
La classe QComboBox contiene molti metodi per eseguire varie attività relative a ComboBox. Alcuni dei metodi più comunemente usati di questa classe sono descritti di seguito:
Nome del metodo | Scopo |
---|---|
contare() | Utilizzato per contare il numero totale di elementi nell'elenco. |
Aggiungi articolo() | Utilizzato per aggiungere un singolo nuovo elemento all'elenco. |
addItems() | Utilizzato per aggiungere più elementi all'elenco. |
voceTesto() | Utilizzato per leggere il testo di un particolare elemento in base a un indice. |
setItemText() | Utilizzato per impostare il testo di un particolare elemento in base a un indice. |
testocorrente() | Utilizzato per leggere il testo dell'elemento selezionato. |
indicecorrente() | Utilizzato per leggere l'indice dell'elemento selezionato. |
chiaro() | Utilizzato per eliminare tutti gli elementi dall'elenco. |
evidenziato() | Utilizzato quando un elemento nell'elenco è evidenziato. |
attivato() | Utilizzato quando un elemento viene selezionato dall'utente. |
IndicecorrenteCambiato() | Utilizzato quando l'elemento nell'elenco è cambiato. |
Utilizzo di ComboBox
Le sezioni seguenti forniscono esempi che spiegano alcuni usi differenti del ComboBox utilizzando il modulo QComboBox della libreria PyQt.
Esempio 1: creare un semplice elenco a discesa
Questo esempio mostra come creare un semplice elenco a discesa utilizzando la classe QComboBox. Qui viene creato un elenco a discesa di cinque elementi ed è collegato a una funzione personalizzata che stamperà il valore selezionato dall'elenco. Un'etichetta viene utilizzata nella funzione dell'elenco a discesa per visualizzare il testo statico e un'altra etichetta viene utilizzata sotto l'elenco a discesa per mostrare il valore selezionato.
# Importa i moduli necessarisistema di importazione
da PyQt5.Importazione di QtWidgets (QApplication, QWidget, QLabel, QVBoxLayout, QComboBox)
# Dichiara la classe per creare il ComboBox
class ComboExample (QWidget):
def __init__(self):
super().__dentro__()
# Imposta l'etichetta prima del ComboBox
se stesso.topLabel = QLabel('Seleziona il tuo linguaggio di programmazione preferito:', self)
# Definisci la casella combinata con gli elementi
combobox = QComboBox(self)
casella combinata.addItem('PHP')
casella combinata.addItem('Python')
casella combinata.addItem('Perl')
casella combinata.addItem('Bash')
casella combinata.addItem('Java')
# Imposta l'etichetta dopo il ComboBox
se stesso.bottomLabel = QLabel(", self)
se stesso.fondoLabel.aggiusta dimensione()
# Definisci il riquadro del layout verticale
v_layout = QVBoxLayout()
v_layout.addWidget(self.topLabel)
v_layout.addWidget (casella combinata)
v_layout.addWidget(self.fondoLabel)
# Chiama il metodo personalizzato se è selezionato un elemento
casella combinata.attivato[str].connettersi (auto).suSelezionato)
# Imposta le configurazioni per la finestra
se stesso.setContentsMargins(20, 20, 20, 20)
se stesso.setLayout(v_layout)
se stesso.spostare (800, 300)
se stesso.setWindowTitle('Uso di ComboBox')
# Funzione personalizzata per leggere il valore dell'elemento selezionato
def onSelected(self, txtVal):
txtVal = "\nHai selezionato: " + txtVal
se stesso.fondoLabel.setText(txtVal)
# Crea un oggetto app ed esegui l'app
app = QApplication(sys.argomento)
combobox = ComboExample()
casella combinata.mostrare()
app.exec()
Se l'utente fa clic sull'elenco a discesa dopo aver eseguito lo script, verrà visualizzato il seguente elenco.
Se l'utente seleziona il valore bash dall'elenco a discesa, il valore della seconda etichetta verrà modificato in 'Hai selezionato: Bash.'
Esempio 2: creare un ComboBox utilizzando l'elenco
Nell'esempio precedente, l'elenco a discesa è stato creato con dati statici utilizzando il metodo addItem() della classe QComboBox. Questo esempio mostra come aggiungere più elementi nell'elenco a discesa definendo un elenco Python. Innanzitutto, aggiungeremo del testo statico al primo elemento dell'elenco a discesa utilizzando il metodo addItem()em. Successivamente, definiremo un elenco di cinque elementi nello script e aggiungeremo questi elementi all'elenco a discesa utilizzando il metodo addItems(). Una funzione personalizzata è allegata all'elenco a discesa per visualizzare il messaggio nell'etichetta in base alla selezione dell'utente.
# Importa i moduli necessarisistema di importazione
da PyQt5.Importazione QtWidgets *
# Dichiara la classe di creare una casella combinata utilizzando i dati dell'elenco
class ComboExample(QMainWindow):
def __init__(self):
super().__dentro__()
# Imposta il titolo della finestra
se stesso.setWindowTitle("ComboBox con dati elenco")
# Imposta la geometria per la finestra
se stesso.setGeometria(100, 100, 350, 150)
# Crea casella combinata
se stesso.combobox = QComboBox(self)
# Imposta la geometria per la casella combinata
se stesso.casella combinata.impostaGeometria(30, 30, 200, 30)
# Definisci gli elementi dell'elenco per la casella combinata
src_engines = ["google.com", "yahoo.com", "chiedi.com", "baidu.com", "yandex.com"]
# Abilita l'opzione modificabile della casella combinata
se stesso.casella combinata.setEditable(Vero)
# Imposta il primo elemento per la casella combinata
se stesso.casella combinata.addItem("Seleziona motore di ricerca")
# Aggiungi più elementi nella casella combinata usando l'elenco
se stesso.casella combinata.addItems(src_engines)
# Definisci l'etichetta nella parte inferiore della casella combinata per fornire un messaggio all'utente
se stesso.msgLabel = QLabel(", self)
# Imposta la geometria per l'etichetta
se stesso.msgLabel.setGeometria(30, 60, 290, 60)
# Chiama la funzione personalizzata quando viene selezionato un elemento
se stesso.casella combinata.attivato[str].connettersi (auto).su Clic)
# Sposta la posizione della finestra
se stesso.spostare (800, 400)
# Mostra la finestra
se stesso.mostrare()
# Definire un metodo per gestire l'evento click del Combobox
def onClicked(self, val):
# Controlla che qualsiasi elemento sia selezionato dall'utente o meno
if val == "Seleziona motore di ricerca":
messaggio = "Non hai selezionato nulla."
altro:
message = "Il tuo motore di ricerca preferito è " + val
# Visualizza il testo del messaggio nell'etichetta
se stesso.msgLabel.setText(messaggio)
# Visualizza il messaggio nella console
stampa (messaggio)
# Crea l'oggetto app
app = QApplication(sys.argomento)
# Crea un oggetto della classe oggetto class
combo = ComboExample()
# Esegui l'app
app.exec()
Se l'utente fa clic sull'elenco a discesa dopo aver eseguito lo script, verrà visualizzato il seguente elenco.
Se l'utente seleziona qualsiasi elemento tranne il primo elemento nell'elenco a discesa, il valore selezionato verrà mostrato nell'etichetta combinandolo con l'altro testo.
Se l'utente seleziona il primo elemento nell'elenco a discesa, il valore, 'Non hai selezionato niente'verrà mostrato nell'etichetta.
Conclusione
Questo articolo ti ha mostrato come creare e utilizzare elenchi a discesa in Python usando il QComboBox classe usando semplici esempi per aiutarti a capire meglio l'uso di questa classe.