Python

Sådan bruges PyQt QComboBox

Sådan bruges PyQt QComboBox

EN Kombinationsfelt bruges til at vælge et emne fra en liste over emner, ligesom radioknappen. Det QComboBox klasse af PyQt bruges til at oprette rullelister ved hjælp af Python-script. Det viser en liste over emner, som brugeren kan vælge. Emnerne i ComboBox kan tilføjes, ændres og fjernes ved hjælp af scriptet. Flere poster kan vælges som CheckBox-knappen fra listen over emner fra ComboBox, så kaldes den ListBox. Denne vejledning viser dig, hvordan du bruger QComboBox til at oprette en rulleliste i Python.

QComboBox-metoder

QComboBox-klassen indeholder mange metoder til at udføre forskellige opgaver relateret til ComboBox. Nogle af de mere almindeligt anvendte metoder i denne klasse er beskrevet nedenfor:

Metodenavn Formål
tælle() Bruges til at tælle det samlede antal varer på listen.
addItem () Bruges til at tilføje et enkelt nyt element til listen.
addItems () Bruges til at tilføje flere emner til listen.
itemText () Bruges til at læse teksten til et bestemt element baseret på et indeks.
setItemText () Bruges til at indstille teksten til et bestemt element baseret på et indeks.
currentText () Bruges til at læse teksten til det valgte emne.
currentIndex () Bruges til at læse indekset for det valgte element.
klar() Bruges til at slette alle emner fra listen.
fremhævet () Bruges, når et element på listen er fremhævet.
aktiveret () Bruges, når en vare er valgt af brugeren.
currentIndexChanged () Bruges, når elementet på listen er ændret.

Brug af ComboBox

De følgende afsnit giver eksempler, der forklarer forskellige anvendelser af ComboBox ved hjælp af QComboBox-modulet i PyQt-biblioteket.

Eksempel 1: Opret en simpel rulleliste

Dette eksempel viser dig, hvordan du opretter en simpel rulleliste ved hjælp af QComboBox-klassen. Her oprettes en rulleliste med fem elementer, der er knyttet til en brugerdefineret funktion, der udskriver den valgte værdi fra listen. En etiket bruges i rullelistens funktion til at vise statisk tekst, og en anden etiket bruges under rullelisten til at vise den valgte værdi.

# Importer nødvendige moduler
importer sys
fra PyQt5.Import af QtWidgets (QApplication, QWidget, QLabel, QVBoxLayout, QComboBox)
# Erklær klasse for at oprette ComboBox
klasse ComboExample (QWidget):
def __init __ (selv):
super().__i det__()
# Indstil etiketten før ComboBox
selv.topLabel = QLabel ('Vælg dit foretrukne programmeringssprog:', selv)
# Definer kombinationsboksen med genstande
kombinationsboks = QComboBox (selv)
kombinationsfelt.addItem ('PHP')
kombinationsfelt.addItem ('Python')
kombinationsfelt.addItem ('Perl')
kombinationsfelt.addItem ('Bash')
kombinationsfelt.addItem ('Java')
# Indstil etiketten efter ComboBox
selv.bottomLabel = QLabel (", selv)
selv.bundmærke.juster størrelse ()
# Definer ruteformat layoutfelt
v_layout = QVBoxLayout ()
v_layout.addWidget (selv.topLabel)
v_layout.addWidget (kombinationsboks)
v_layout.addWidget (selv.nederste etiket)
# Ring til den brugerdefinerede metode, hvis et element er valgt
kombinationsfelt.aktiveret [str].forbinde (selv.onValgte)
# Indstil konfigurationerne for vinduet
selv.setContentsMargins (20, 20, 20, 20)
selv.setLayout (v_layout)
selv.flyt (800, 300)
selv.setWindowTitle ('Brug af ComboBox')
# Brugerdefineret funktion til at læse værdien af ​​det valgte emne
def onSelected (self, txtVal):
txtVal = "\ nDu har valgt:" + txtVal
selv.bundmærke.setText (txtVal)
# Opret app-objekt og udfør appen
app = QApplication (sys.argv)
kombinationsboks = ComboExample ()
kombinationsfelt.at vise()
app.udføre ()

Hvis brugeren klikker på rullelisten efter udførelse af scriptet, vises følgende liste.

Hvis brugeren vælger værdien Bash fra rullelisten ændres værdien af ​​den anden etiket til 'Du har valgt: Bash.''

Eksempel 2: Opret en kombinationsboks ved hjælp af listen

I det foregående eksempel blev rullelisten oprettet med statiske data ved hjælp af addItem () -metoden i QComboBox-klassen. Dette eksempel viser dig, hvordan du tilføjer flere elementer på rullelisten ved at definere en Python-liste. Først vil vi tilføje statisk tekst til det første element på rullelisten ved hjælp af metoden addItem (). Dernæst definerer vi en liste over fem elementer i scriptet, og vi tilføjer disse elementer til rullelisten ved hjælp af metoden addItems (). En brugerdefineret funktion er knyttet til rullelisten for at få vist meddelelsen i etiketten baseret på brugervalget.

# Importer nødvendige moduler
importer sys
fra PyQt5.Import af QtWidgets *
# Erklær klassen for at oprette kombinationsfelt ved hjælp af listedata
klasse ComboExample (QMainWindow):
def __init __ (selv):
super().__i det__()
# Indstil vinduet
selv.setWindowTitle ("ComboBox with List data")
# Indstil geometrien til vinduet
selv.setGeometry (100, 100, 350, 150)
# Opret kombinationsfelt
selv.kombinationsboks = QComboBox (selv)
# Indstil geometrien til kombinationsboksen
selv.kombinationsfelt.setGeometry (30, 30, 200, 30)
# Definer listeelementer til kombinationsboksen
src_engines = ["google.com "," yahoo.com "," spørg.com "," baidu.com "," yandex.com "]
# Aktiver den redigerbare mulighed for kombinationsboksen
selv.kombinationsfelt.setEditable (True)
# Indstil det første element til kombinationsboksen
selv.kombinationsfelt.addItem ("Vælg søgemaskine")
# Tilføj flere emner i kombinationsboksen ved hjælp af listen
selv.kombinationsfelt.addItems (src_engines)
# Definer etiket i bunden af ​​kombinationsboksen for at give brugeren besked
selv.msgLabel = QLabel (", selv)
# Indstil etiketens geometri
selv.msgLabel.setGeometry (30, 60, 290, 60)
# Ring til den brugerdefinerede funktion, når et element er valgt
selv.kombinationsfelt.aktiveret [str].forbinde (selv.onClicked)
# Flyt vinduespositionen
selv.flyt (800, 400)
# Vis vinduet
selv.at vise()
# Definer en metode til at håndtere klikhændelsen i kombinationsboksen
def onClicked (selv, val):
# Kontroller, at ethvert element er valgt af brugeren eller ej
if val == "Vælg søgemaskine":
message = "Du har ikke valgt noget."
andet:
message = "Din foretrukne søgemaskine er" + val
# Vis meddelelsesteksten på etiketten
selv.msgLabel.setText (besked)
# Vis meddelelsen i konsollen
udskrive (besked)
# Opret app-objektet
app = QApplication (sys.argv)
# Opret et objekt af klasseobjektet
combo = ComboExample ()
# Udfør appen
app.udføre ()

Hvis brugeren klikker på rullelisten efter at have udført scriptet, vises følgende liste.

Hvis brugeren vælger et element undtagen det første element i rullelisten, vises den valgte værdi i etiketten ved at kombinere den med den anden tekst.

Hvis brugeren vælger det første element i rullelisten, så værdien, 'Du har ikke valgt noget'vises på etiketten.

Konklusion

Denne artikel viste dig, hvordan du opretter og bruger rullelister i Python ved hjælp af QComboBox klasse ved hjælp af enkle eksempler for at hjælpe dig med bedre at forstå brugen af ​​denne klasse.

Bedste kommandoliniespil til Linux
Kommandolinjen er ikke kun din største allierede, når du bruger Linux, den kan også være kilde til underholdning, fordi du kan bruge den til at spille...
Bedste apps til Gamepad Mapping til Linux
Hvis du kan lide at spille spil på Linux med en gamepad i stedet for et typisk tastatur- og musesystem, er der nogle nyttige apps til dig. Mange pc-sp...
Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...