Python

Hvordan bruke PyQt QComboBox

Hvordan bruke PyQt QComboBox

EN ComboBox brukes til å velge ett element fra en liste over elementer, omtrent som alternativknappen. De QComboBox klasse av PyQt brukes til å lage rullegardinlister ved hjelp av Python-skript. Den viser en liste over elementer som brukeren kan velge. Elementene i ComboBox kan legges til, endres og fjernes ved hjelp av skriptet. Flere elementer kan velges som CheckBox-knappen fra listen over elementer fra ComboBox, så kalles den ListBox. Denne veiledningen viser deg hvordan du bruker QComboBox til å lage en rullegardinliste i Python.

QComboBox-metoder

QComboBox-klassen inneholder mange metoder for å utføre forskjellige oppgaver relatert til ComboBox. Noen av de mest brukte metodene i denne klassen er beskrevet nedenfor:

Metodenavn Hensikt
telle() Brukes til å telle det totale antallet elementer i listen.
addItem () Brukes til å legge til et enkelt nytt element i listen.
addItems () Brukes til å legge til flere elementer i listen.
itemText () Brukes til å lese teksten til et bestemt element basert på en indeks.
setItemText () Brukes til å angi teksten til et bestemt element basert på en indeks.
currentText () Brukes til å lese teksten til det valgte elementet.
currentIndex () Brukes til å lese indeksen for det valgte elementet.
klar() Brukes til å slette alle elementene fra listen.
fremhevet() Brukes når et element i listen er uthevet.
aktivert () Brukes når et element er valgt av brukeren.
currentIndexChanged () Brukes når elementet i listen er endret.

ComboBox bruk

Følgende seksjoner gir eksempler som forklarer noen forskjellige bruksområder for ComboBox ved bruk av QComboBox-modulen i PyQt-biblioteket.

Eksempel 1: Opprett en enkel rullegardinliste

Dette eksemplet viser deg hvordan du oppretter en enkel rullegardinliste ved hjelp av QComboBox-klassen. Her opprettes en rullegardinliste med fem elementer som er knyttet til en tilpasset funksjon som vil skrive ut den valgte verdien fra listen. En etikett brukes i rullegardinlistens funksjon for å vise statisk tekst, og en annen etikett brukes under rullegardinlisten for å vise den valgte verdien.

# Importer nødvendige moduler
importer sys
fra PyQt5.Import av QtWidgets (QApplication, QWidget, QLabel, QVBoxLayout, QComboBox)
# Erklare klasse for å lage ComboBox
klasse ComboExample (QWidget):
def __init __ (selv):
super().__i det__()
# Sett etiketten før ComboBox
selv-.topLabel = QLabel ('Velg ditt favoritt programmeringsspråk:', selv)
# Definer kombinasjonsboksen med gjenstander
kombinasjonskasse = QComboBox (selv)
kombinasjonsfelt.addItem ('PHP')
kombinasjonsfelt.addItem ('Python')
kombinasjonsfelt.addItem ('Perl')
kombinasjonsfelt.addItem ('Bash')
kombinasjonsfelt.addItem ('Java')
# Sett etiketten etter ComboBox
selv-.bottomLabel = QLabel (", selv)
selv-.bottomLabel.justerSize ()
# Definer vartisk layoutboks
v_layout = QVBoxLayout ()
v_layout.addWidget (selvtill.topLabel)
v_layout.addWidget (kombinasjonsfelt)
v_layout.addWidget (selvtill.bottomLabel)
# Ring den egendefinerte metoden hvis noe element er valgt
kombinasjonsfelt.aktivert [str].koble (selv.onVelgt)
# Still inn konfigurasjonene for vinduet
selv-.setContentsMargins (20, 20, 20, 20)
selv-.setLayout (v_layout)
selv-.flytte (800, 300)
selv-.setWindowTitle ('Bruk av ComboBox')
# Egendefinert funksjon for å lese verdien av det valgte elementet
def onSelected (self, txtVal):
txtVal = "\ nDu har valgt:" + txtVal
selv-.bottomLabel.setText (txtVal)
# Opprett appobjekt og kjør appen
app = QApplication (sys.argv)
combobox = ComboExample ()
kombinasjonsfelt.vise fram()
app.utføre ()

Hvis brukeren klikker på rullegardinlisten etter å ha utført skriptet, vises følgende liste.

Hvis brukeren velger verdien Bash fra rullegardinlisten vil verdien til den andre etiketten endres til 'Du har valgt: Bash.'

Eksempel 2: Opprett en kombinasjonsboks ved hjelp av listen

I forrige eksempel ble rullegardinlisten opprettet med statiske data ved hjelp av addItem () -metoden i QComboBox-klassen. Dette eksemplet viser deg hvordan du legger til flere elementer i rullegardinlisten ved å definere en Python-liste. Først vil vi legge til statisk tekst til det første elementet i rullegardinlisten ved hjelp av metoden addItem (). Deretter vil vi definere en liste over fem elementer i skriptet, og vi vil legge til disse elementene i rullegardinlisten ved hjelp av addItems () -metoden. En tilpasset funksjon er festet til rullegardinlisten for å vise meldingen i etiketten basert på brukervalget.

# Importer nødvendige moduler
importer sys
fra PyQt5.Import av QtWidgets *
# Erklare at klassen skal lage kombinasjonsfelt ved å bruke listedata
klasse ComboExample (QMainWindow):
def __init __ (selv):
super().__i det__()
# Sett tittelen på vinduet
selv-.setWindowTitle ("ComboBox with List data")
# Sett geometrien for vinduet
selv-.setGeometry (100, 100, 350, 150)
# Opprett kombinasjonsfelt
selv-.kombinasjonskasse = QComboBox (selv)
# Still inn geometrien for kombinasjonsboksen
selv-.kombinasjonsfelt.setGeometry (30, 30, 200, 30)
# Definer listeelementer for kombinasjonsboksen
src_engines = ["google.com "," yahoo.com "," spør.com "," baidu.com "," yandex.com "]
# Aktiver det redigerbare alternativet i kombinasjonsboksen
selv-.kombinasjonsfelt.setEditable (True)
# Still inn det første elementet for kombinasjonsboksen
selv-.kombinasjonsfelt.addItem ("Velg søkemotor")
# Legg til flere elementer i kombinasjonsfeltet ved hjelp av listen
selv-.kombinasjonsfelt.addItems (src_engines)
# Definer etiketten nederst i kombinasjonsfeltet for å gi brukeren en melding
selv-.msgLabel = QLabel (", selv)
# Sett geometrien for etiketten
selv-.msgLabel.setGeometry (30, 60, 290, 60)
# Ring den egendefinerte funksjonen når et element er valgt
selv-.kombinasjonsfelt.aktivert [str].koble (selv.onClicked)
# Flytt vinduets posisjon
selv-.flytte (800, 400)
# Vis vinduet
selv-.vise fram()
# Definer en metode for å håndtere klikkhendelsen i kombinasjonsboksen
def onKlikket (selv, val):
# Sjekk at noe er valgt av brukeren eller ikke
if val == "Velg søkemotor":
message = "Du har ikke valgt noe."
ellers:
message = "Din favoritt søkemotor er" + val
# Vis meldingsteksten på etiketten
selv-.msgLabel.setText (melding)
# Vis meldingen i konsollen
skriv ut (melding)
# Opprett appobjektet
app = QApplication (sys.argv)
# Lag et objekt av klasseobjektet
combo = ComboExample ()
# Utfør appen
app.utføre ()

Hvis brukeren klikker på rullegardinlisten etter å ha utført skriptet, vises følgende liste.

Hvis brukeren velger et element bortsett fra det første elementet i rullegardinlisten, vil den valgte verdien vises på etiketten ved å kombinere den med den andre teksten.

Hvis brukeren velger det første elementet i rullegardinlisten, så verdien, 'Du har ikke valgt noevises på etiketten.

Konklusjon

Denne artikkelen viste deg hvordan du oppretter og bruker rullegardinlister i Python ved hjelp av QComboBox klasse ved hjelp av enkle eksempler for å hjelpe deg med å bedre forstå bruken av denne klassen.

Nyttige verktøy for Linux-spillere
Hvis du liker å spille spill på Linux, er sjansen stor for at du har brukt apper og verktøy som Wine, Lutris og OBS Studio for å forbedre spilloppleve...
HD Remastered Games for Linux som aldri hadde en Linux-utgave tidligere
Mange spillutviklere og utgivere kommer med HD-remaster av gamle spill for å forlenge franchisetiden, vennligst fans som ber om kompatibilitet med mod...
Hvordan bruke AutoKey til å automatisere Linux-spill
AutoKey er et desktopautomatiseringsverktøy for Linux og X11, programmert i Python 3, GTK og Qt. Ved å bruke skript og MACRO-funksjonalitet kan du aut...