Pitone

Come usare PyQt QComboBox

Come usare PyQt QComboBox

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 necessari
sistema 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 necessari
sistema 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.

I migliori emulatori di console di gioco per Linux
Questo articolo elencherà il popolare software di emulazione della console di gioco disponibile per Linux. L'emulazione è un livello di compatibilità ...
Le migliori distribuzioni Linux per il gioco nel 2021
Il sistema operativo Linux ha fatto molta strada dal suo aspetto originale, semplice e basato su server. Questo sistema operativo è notevolmente migli...
Come acquisire e riprodurre in streaming la tua sessione di gioco su Linux
In passato, giocare era considerato solo un hobby, ma con il tempo l'industria dei giochi ha visto una crescita enorme in termini di tecnologia e nume...