Python

Sådan bruges PyQt afkrydsningsfelt?

Sådan bruges PyQt afkrydsningsfelt?

Afkrydsningsfeltet bruges til at vælge nul eller flere muligheder fra mange muligheder ved hjælp af den grafiske brugergrænseflade. En formular med et afkrydsningsfelt kan oprettes ved hjælp af QCheckBox klasse i et Python-script eller ved hjælp af QCheckBox widget til Qt Designer uden at skrive noget script.

Når der oprettes en formular med et afkrydsningsfelt ved hjælp af QCheckBox klasse, så stateChanged.Opret forbindelse() funktion kaldes til at anvende handlingen udført af brugerens input. Hvis brugeren markerede en afkrydsningsfeltmulighed, blev værdien af QtCore.Qt.afkrydset vil være sandt. Flere afkrydsningsfelter med et enkelt valg som f.eks. Radioknap kan oprettes ved hjælp af QbuttonGroup klasse.

Hvordan en formular med et afkrydsningsfelt kan oprettes ved at skrive et Python-script, vises i denne vejledning.

Nødvendige metoder til QCheckBox

QCheckBox klasse har mange funktioner til at udføre forskellige typer opgaver med afkrydsningsfeltet. Nogle af de mest almindeligt anvendte metoder i denne klasse er beskrevet nedenfor:

Metodenavn Formål
isChecked () Det returnerer en boolsk værdi. Når brugeren klikker for at markere afkrydsningsfeltet, returnerer det Sandt, ellers returnerer det Falsk.
setChecked () Det bruges til at ændre tilstanden for afkrydsningsfeltet. Sand værdi er indstillet til at markere afkrydsningsfeltet, og Falsk værdi er indstillet til at afkrydse afkrydsningsfeltet.
tekst() Det bruges til at læse etiketten i afkrydsningsfeltet.
setText () Det bruges til at indstille etiketten til afkrydsningsfeltet.
isTriState () Det returnerer en boolsk værdi. Det bruges til at kontrollere tri-tilstanden for at vide, om afkrydsningsfeltet er aktiveret eller ej.
setTriState () Det bruges til at aktivere den tredje tilstand i afkrydsningsfeltet, der angiver den neutrale tilstand.

Opret en formular med afkrydsningsfelt ved hjælp af QCheckBox-klasse:

Anvendelsen af ​​afkrydsningsfeltet vises i dette afsnit ved hjælp af forskellige typer eksempler. Brugen af ​​et enkelt afkrydsningsfelt, som vist i det første eksempel, og brugen af ​​flere afkrydsningsfelter er vist i det andet eksempel.

Eksempel 1: Oprettelse af et enkelt afkrydsningsfelt

Måden at oprette et enkelt afkrydsningsfelt ved hjælp af QCheckBox klasse og aflæsning af inputværdien for afkrydsningsfeltet, der leveres af brugeren, vises i dette eksempel. De nødvendige moduler importeres i begyndelsen af ​​scriptet. En etiket bruges i ovenstående afkrydsningsfelt til at give oplysningerne til brugeren. Hvis brugeren klikker på afkrydsningsfeltet for at markere, udskrives scriptet, “Wow! Du kan godt lide at programmere”, Ellers udskrives scriptet,“Åh nej!, Du kan ikke lide programmering”.

# Importer nødvendige moduler
importer sys
fra PyQt5 importerer QtCore, QtWidgets
fra PyQt5.QtWidgets importerer QMainWindow, QCheckBox, QLabel, QVBoxLayout, QDesktopWidget
# Definer klasse til oprettelse af formularen med et enkelt afkrydsningsfelt
klasse SingleCheckbox (QMainWindow):
def __init __ (selv):
super().__i det__()
# Opret etiketteksten til brugeren
lb = QLabel ("Kan du lide at programmere?", selv)
lb.setGeometry (20, 20, 200, 20)
lb.flyt (20, 20)
# Opret et afkrydsningsfelt med etiketten
cb = QCheckBox ('Ja', selv)
cb.stateChanged.forbinde (selv.Check_Answer)
cb.flyt (20, 50)
# Indstil det lodrette Qt-layout
vbox = QVBoxLayout ()
vbox.addWidget (lb)
vbox.addWidget (cb)
# Indstil vinduetitel og størrelse
selv.setWindowTitle ('Formular med enkelt afkrydsningsfelt')
selv.setGeometry (60, 60, 300, 100)
# Vis vinduet i midten af ​​skærmen
vinde = selv.frameGeometry ()
pos = QDesktopWidget ().tilgængeligGeometri ().centrum()
vinde.moveCenter (pos)
selv.flytte (vinde.øverst til venstre())
selv.at vise()
# Definer funktion for at kontrollere brugerens input
def Check_Answer (selv, tilstand):
hvis tilstand == QtCore.Qt.Kontrolleret:
udskrive ("Wow! Du kan godt lide at programmere.")
andet:
print ("Åh nej!, Du kan ikke lide programmering.")
# Opret app-objekt og udfør appen
app = QtWidgets.QApplication (sys.argv)
form = SingleCheckbox ()
app.udføre ()

Følgende vindue med et afkrydsningsfelt vises efter udførelse af scriptet.


I den følgende output har brugeren markeret afkrydsningsfeltet to gange og afkrydset afkrydsningsfeltet en gang.

Eksempel 2: Oprettelse af flere afkrydsningsfelter

Metoden til at oprette flere afkrydsningsfelter ved hjælp af QCheckbox klasse og læsning af flere værdier for de flere afkrydsningsfelter vises i dette eksempel. To etiketter og tre afkrydsningsfelter tilføjes til vinduet. Den første etiket tilføjes i begyndelsen af ​​afkrydsningsfelterne for at give oplysninger til brugeren, mens den anden etiket tilføjes i slutningen af ​​afkrydsningsfelterne for at vise værdierne for det valgte afkrydsningsfelt eller afkrydsningsfelter.

# Importer nødvendige moduler
importer sys
fra PyQt5.Import af QtWidgets (QWidget, QCheckBox, QApplication, QVBoxLayout, QLabel, QDesktopWidget)
# Definer klasse til oprettelse af formularen med flere afkrydsningsfelter
klasse MultipleCheckbox (QWidget):
def __init __ (selv):
super().__i det__()
# Indstil etiketteksten til brugeren
lb = QLabel ("Vælg din favorit mad (er):", selv)
lb.setGeometry (20, 20, 100, 20)
lb.flyt (20, 20)
# Opret tre afkrydsningsfelter
cb1 = QCheckBox ('Chokoladekage', selv)
cb1.flyt (20, 70)
cb1.stateChanged.forbinde (lambda: selv.Selected_Value (cb1))
cb2 = QCheckBox ('Ice Cream', selv)
cb2.flyt (20, 90)
cb2.stateChanged.forbinde (lambda: selv.Selected_Value (cb2))
cb3 = QCheckBox ('Pasta', selv)
cb3.flyt (20, 110)
cb3.stateChanged.forbinde (lambda: selv.Selected_Value (cb3))
selv.label = QLabel ('Intet valgt')
selv.etiket.flyt (20, 150)
# Indstil det lodrette Qt-layout
vbox = QVBoxLayout ()
vbox.addWidget (lb)
vbox.addWidget (cb1)
vbox.addWidget (cb2)
vbox.addWidget (cb3)
vbox.addWidget (selv.etiket)
selv.setLayout (vbox)
selv.setWindowTitle ('Formular med flere afkrydsningsfelter')
selv.setGeometry (60, 60, 350, 200)
selv.lblText = "
# Vis vinduet i midten af ​​skærmen
vinde = selv.frameGeometry ()
pos = QDesktopWidget ().tilgængeligGeometri ().centrum()
vinde.moveCenter (pos)
selv.flytte (vinde.øverst til venstre())
selv.at vise()
# Definer funktion til at læse brugerens input
def Selected_Value (selv, btn):
hvis selv.lblText != ":
str = selv.lblText
strArray = str.split (',')
selv.lblText = "
til val in strArray:
hvis btn.tekst() != val:
hvis selv.lblText == ":
selv.lblText = val
andet:
selv.lblText + = ',' + val
hvis btn.isChecked () == True:
hvis selv.lblText == ":
selv.lblText = btn.tekst()
andet:
selv.lblText + = ',' + btn.tekst()
andet:
hvis btn.isChecked () == True:
hvis selv.lblText == ":
selv.lblText = btn.tekst()
andet:
selv.lblText + = ',' + btn.tekst()
selv.etiket.setText ('Du har valgt \ n' + selv.lblText)
# Opret app-objekt og udfør appen
app = QApplication (sys.argv)
ex = MultipleCheckbox ()
sys.exit (app.exec_ ())

Følgende vindue vises efter udførelse af scriptet. Standardværdien for den anden etiket er “Intet er valgt”Og værdien af ​​etiketten ændres, når et afkrydsningsfelt er markeret eller ikke markeret af brugeren.


I det følgende output kontrolleres to afkrydsningsfelter af brugeren, og værdien af ​​den anden etiket ændres til “Chokolade, pasta”.

Konklusion

Måden at definere en eller flere afkrydsningsfelter og læse værdierne for de valgte afkrydsningsfelter er blevet forklaret i denne vejledning ved hjælp af to enkle eksempler. Grupperne af afkrydsningsfelter kan defineres til at markere et bestemt afkrydsningsfelt fra en gruppe, der ikke vises her.

Bedste spil at spille med håndsporing
Oculus Quest introducerede for nylig den gode idé om håndsporing uden controllere. Med et stadigt stigende antal spil og aktiviteter, der udfører supp...
Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...
Top 5 spiloptagelseskort
Vi har alle set og elsket streaming af gameplay på YouTube. PewDiePie, Jakesepticye og Markiplier er kun nogle af de bedste spillere, der har tjent mi...