Python

Hvordan bruke PyQt-avkrysningsruten?

Hvordan bruke PyQt-avkrysningsruten?

Avkrysningsruten brukes til å velge null eller flere alternativer fra mange alternativer ved hjelp av det grafiske brukergrensesnittet. Et skjema med avkrysningsrute kan opprettes ved hjelp av QCheckBox klasse i et Python-skript eller ved hjelp av QCheckBox widget av Qt Designer uten å skrive noe manus.

Når et skjema med avkrysningsrute opprettes ved hjelp av QCheckBox klasse, da stateChanged.koble() funksjonen kalles for å bruke handlingen utført av brukerens inngang. Hvis brukeren merket av for et avkrysningsalternativ, ble verdien av QtCore.Qt.sjekket vil være sant. Flere avkrysningsruter med ett valg som Radio Button kan opprettes ved hjelp av QbuttonGroup klasse.

Hvordan et skjema med en avkrysningsrute kan opprettes ved å skrive et Python-skript, vises i denne veiledningen.

Nødvendige metoder for QCheckBox

QCheckBox klasse har mange funksjoner for å utføre forskjellige typer oppgaver med avkrysningsruten. Noen mest brukte metoder i denne klassen er beskrevet nedenfor:

Metodenavn Hensikt
isChecked () Den returnerer en boolsk verdi. Når brukeren klikker for å merke av i avkrysningsruten, returnerer den True, ellers returnerer den False.
setChecked () Den brukes til å endre avmerkingsboksen. Sann verdi er satt for å gjøre avkrysningsruten, og Falske verdi er angitt for å gjøre avkrysningsruten ukjent.
tekst() Den brukes til å lese merkelappen til avmerkingsboksen.
setText () Den brukes til å sette merkelappen til avmerkingsboksen.
isTriState () Den returnerer en boolsk verdi. Den brukes til å sjekke tri-state for å vite om avkrysningsruten er aktivert eller ikke.
setTriState () Den brukes til å aktivere den tredje tilstanden i avmerkingsboksen som indikerer nøytral tilstand.

Opprett et skjema med avkrysningsrute ved hjelp av QCheckBox-klasse:

Bruken av avkrysningsboksen vises i denne delen ved hjelp av forskjellige typer eksempler. Bruken av en enkelt avkrysningsrute, som vist i det første eksemplet, og bruken av flere avkrysningsruter er vist i det andre eksemplet.

Eksempel 1: Opprette en enkelt avkrysningsrute

Måten å lage en enkelt avkrysningsrute med QCheckBox klasse og lesing av inngangsverdien til avkrysningsboksen som er gitt av brukeren, vises i dette eksemplet. De nødvendige modulene importeres i begynnelsen av skriptet. En etikett brukes i avmerkingsboksen ovenfor for å gi informasjonen til brukeren. Hvis brukeren klikker på avkrysningsruten for å sjekke, vil skriptet skrives ut, “Wow! Du liker programmering”, Ellers vil manuset skrive ut,“å nei!, Du liker ikke programmering”.

# Importer nødvendige moduler
importer sys
fra PyQt5 importerer QtCore, QtWidgets
fra PyQt5.QtWidgets importerer QMainWindow, QCheckBox, QLabel, QVBoxLayout, QDesktopWidget
# Definer klasse for å opprette skjemaet med en enkelt avkrysningsrute
klasse SingleCheckbox (QMainWindow):
def __init __ (selv):
super().__i det__()
# Lag merketeksten for brukeren
lb = QLabel ("Liker du programmering?", selv)
lb.setGeometry (20, 20, 200, 20)
lb.flytte (20, 20)
# Opprett en avkrysningsrute med etiketten
cb = QCheckBox ('Ja', selv)
cb.stateChanged.koble (selv.Sjekk svar)
cb.flytte (20, 50)
# Still inn det vertikale Qt-oppsettet
vbox = QVBoxLayout ()
vbox.addWidget (lb)
vbox.addWidget (cb)
# Still inn vinduetittel og størrelse
selv-.setWindowTitle ('Skjema med enkelt avkrysningsrute')
selv-.setGeometry (60, 60, 300, 100)
# Vis vinduet midt på skjermen
vinne = selvtillit.frameGeometry ()
pos = QDesktopWidget ().tilgjengeligGeometri ().senter()
vinne.moveCenter (pos)
selv-.flytte (vinne.øverst til venstre())
selv-.vise fram()
# Definer funksjon for å sjekke brukerens inngang
def Check_Answer (selv, tilstand):
hvis tilstand == QtCore.Qt.Sjekket:
utskrift ("Wow! Du liker programmering.")
ellers:
utskrift ("Å nei!, Du liker ikke programmering.")
# Opprett appobjekt og kjør appen
app = QtWidgets.QApplication (sys.argv)
form = SingleCheckbox ()
app.utføre ()

Følgende vindu med en avkrysningsrute vises etter at skriptet er utført.


I den følgende utgangen har brukeren merket av i avmerkingsboksen to ganger og avmarkert avkrysningsruten en gang.

Eksempel 2: Opprette flere avkrysningsruter

Metoden for å lage flere avkrysningsruter ved hjelp av QKryss klasse og lesing av flere verdier for flere avmerkingsboksene vises i dette eksemplet. To etiketter og tre avkrysningsruter legges til i vinduet. Den første etiketten legges til i begynnelsen av avmerkingsboksene for å gi informasjon til brukeren, mens den andre etiketten legges til på slutten av avmerkingsboksene for å vise verdiene til den valgte avkrysningsruten.

# Importer nødvendige moduler
importer sys
fra PyQt5.Import av QtWidgets (QWidget, QCheckBox, QApplication, QVBoxLayout, QLabel, QDesktopWidget)
# Definer klasse for å opprette skjemaet med flere avkrysningsruter
klasse MultipleCheckbox (QWidget):
def __init __ (selv):
super().__i det__()
# Sett merketeksten for brukeren
lb = QLabel ("Velg din favorittmat (er):", selv)
lb.setGeometry (20, 20, 100, 20)
lb.flytte (20, 20)
# Opprett tre avkrysningsruter
cb1 = QCheckBox ('Sjokoladekake', selv)
cb1.flytte (20, 70)
cb1.stateChanged.koble til (lambda: selv.Selected_Value (cb1))
cb2 = QCheckBox ('Ice-Cream', selv)
cb2.flytte (20, 90)
cb2.stateChanged.koble til (lambda: selv.Selected_Value (cb2))
cb3 = QCheckBox ('Pasta', selv)
cb3.flytte (20, 110)
cb3.stateChanged.koble til (lambda: selv.Selected_Value (cb3))
selv-.label = QLabel ('Nothing Selected')
selv-.merkelapp.flytte (20, 150)
# Still inn det vertikale Qt-oppsettet
vbox = QVBoxLayout ()
vbox.addWidget (lb)
vbox.addWidget (cb1)
vbox.addWidget (cb2)
vbox.addWidget (cb3)
vbox.addWidget (selvtill.merkelapp)
selv-.setLayout (vbox)
selv-.setWindowTitle ('Skjema med flere avkrysningsruter')
selv-.setGeometry (60, 60, 350, 200)
selv-.lblText = "
# Vis vinduet midt på skjermen
vinne = selvtillit.frameGeometry ()
pos = QDesktopWidget ().tilgjengeligGeometri ().senter()
vinne.moveCenter (pos)
selv-.flytte (vinne.øverst til venstre())
selv-.vise fram()
# Definer funksjon for å lese brukerens inngang
def Selected_Value (selv, btn):
hvis selv.lblText != ":
str = selvtillit.lblText
strArray = str.split (',')
selv-.lblText = "
for val in strArray:
hvis btn.tekst() != val:
hvis selv.lblText == ":
selv-.lblText = val
ellers:
selv-.lblText + = ',' + val
hvis btn.isChecked () == True:
hvis selv.lblText == ":
selv-.lblText = btn.tekst()
ellers:
selv-.lblText + = ',' + btn.tekst()
ellers:
hvis btn.isChecked () == True:
hvis selv.lblText == ":
selv-.lblText = btn.tekst()
ellers:
selv-.lblText + = ',' + btn.tekst()
selv-.merkelapp.setText ('Du har valgt \ n' + selv.lblText)
# Opprett appobjekt og kjør appen
app = QApplication (sys.argv)
ex = MultipleCheckbox ()
sys.exit (app.exec_ ())

Følgende vindu vises etter at skriptet er utført. Standardverdien for den andre etiketten er “Ingenting er valgt”Og verdien på etiketten vil endres når en hvilken som helst avkrysningsrute er avkrysset eller ikke merket av for brukeren.


I den følgende utgangen blir to avkrysningsruter merket av brukeren, og verdien på den andre etiketten blir endret til “Sjokolade, Pasta”.

Konklusjon

Måten å definere en eller flere avkrysningsbokser og lese verdiene til de valgte avmerkingsboksene er forklart i denne veiledningen ved hjelp av to enkle eksempler. Gruppene med avkrysningsruter kan defineres for å velge en bestemt avkrysningsrute fra en gruppe som ikke vises her.

SuperTuxKart for Linux
SuperTuxKart er en flott tittel designet for å gi deg Mario Kart-opplevelsen gratis på Linux-systemet ditt. Det er ganske utfordrende og morsomt å spi...
Kjemp om Wesnoth-opplæringen
Kampen om Wesnoth er et av de mest populære open source-strategispillene du kan spille på dette tidspunktet. Ikke bare har dette spillet vært i utvikl...
0 A.D. Opplæringen
Ut av de mange strategispillene der ute, 0 A.D. klarer å skille seg ut som en omfattende tittel og et veldig dypt, taktisk spill til tross for å være ...