Hvordan bruke PYQT avkrysningsrute?

Hvordan bruke PYQT avkrysningsrute?

Avkrysningsruten brukes til å velge null eller flere alternativer fra mange alternativer ved hjelp av det grafiske brukergrensesnittet. Et skjema med en avkrysningsrute kan opprettes ved å bruke Qcheckbox klasse i et Python -skript eller bruker Qcheckbox widget av QT -designer uten å skrive noe manus.

Når et skjema med en avkrysningsrute opprettes ved hjelp av Qcheckbox Klasse, da Statechanged.koble() Funksjon kalles for å anvende handlingen utført av brukerens innspill. Hvis brukeren sjekket noe avkrysningsrutealternativ, så verdien av Qtcore.Qt.krysset av vil være sant. Flere avmerkingsbokser med et enkelt utvalg som alternativknapp kan opprettes ved hjelp av QButtonGroup klasse.

Hvordan et skjema med en avkrysningsrute kan opprettes ved å skrive et Python -skript vises i denne opplæringen.

Nødvendige metoder for Qcheckbox

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

Metodens navn Hensikt
isChecked () Det returnerer en boolsk verdi. Når brukeren klikker for å sjekke avkrysningsruten, returnerer den sant, ellers returnerer den usant.
Setchecked () Det brukes til å endre tilstanden til avkrysningsruten. Ekte verdi er satt til å gjøre avkrysningsruten avkrysningen av, og det er satt til falsk verdi for å gjøre at avkrysningsruten ikke merket av.
tekst() Den brukes til å lese etiketten til avkrysningsruten.
SettExt () Det brukes til å angi etiketten til avkrysningsruten.
istrister () Det returnerer en boolsk verdi. Det brukes til å sjekke tri-staten for å vite om avmerkingsboksen er aktivert eller ikke.
setTristate () Det brukes til å muliggjøre den tredje tilstanden til avkrysningsruten som indikerer den nøytrale tilstanden.

Lag et skjema med avkrysningsrute ved hjelp av Qcheckbox -klasse:

Bruken av avmerkingsboksen vises i dette avsnittet ved å bruke 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 ved hjelp av Qcheckbox Klasse og lese inngangsverdien til avkrysningsruten gitt av brukeren vises i dette eksemplet. De nødvendige modulene importeres i begynnelsen av skriptet. En etikett brukes i avkrysningsruten ovenfor for å gi informasjonen til brukeren. Hvis brukeren klikker på avkrysningsruten for å sjekke, vil skriptet skrive ut, "Wow! Du liker programmering”, Ellers skriver skriptet,”å nei!, Du liker ikke programmering”.

# Importer nødvendige moduler
Importer Sys
Fra PYQT5 importer qtcore, qtwidgets
Fra PYQT5.QtWidgets importerer QMainWindow, Qcheckbox, Qlabel, QVboxLayout, QDesktopWidget
# Definer klasse for å lage skjemaet med enkelt avkrysningsrute
Klasse SingleCheckbox (QMainWindow):
def __init __ (selv):
super().__i det__()
# Lag etikettteksten for brukeren
LB = Qlabel ("Liker du programmering?", selv)
LB.setgeometry (20, 20, 200, 20)
LB.Flytt (20, 20)
# Opprett en avkrysningsrute med etiketten
CB = Qcheckbox ('Ja', selv)
CB.Statechanged.Koble til (selv.Sjekk svar)
CB.Flytt (20, 50)
# Angi den vertikale QT -oppsettet
VBox = QVBoxLayout ()
VBox.AddWidget (LB)
VBox.AddWidget (CB)
# Still inn vindusittelen og størrelsen
selv-.setWindowTitle ('Form med enkelt avkrysningsrute')
selv-.setgeometry (60, 60, 300, 100)
# Vis vinduet i midten av skjermen
Vinn = selv.rammeometri ()
POS = QDESKTOPWIDGET ().Tilgjengelig GEometry ().senter()
vinne.MOVECENTER (POS)
selv-.Flytt (vinn.øverst til venstre())
selv-.forestilling()
# Definer funksjon for å sjekke brukerens inndata
def check_answer (selv, tilstand):
Hvis stat == Qtcore.Qt.Krysset av:
trykk ("Wow! Du liker programmering.")
ellers:
trykk ("Å nei!, Du liker ikke programmering.")
# Lag appobjekt og utfør appen
app = qtwidgets.Qapplication (Sys.argv)
skjema = singlecheckbox ()
app.exec ()

Følgende vindu med en avkrysningsrute vises etter å ha utført skriptet.


I den følgende utdata har brukeren avkrydnet avkrysningsruten to ganger og ikke merket av avkrysningsruten en gang.

Eksempel 2: Opprette flere avmerkingsbokser

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

# Importer nødvendige moduler
Importer Sys
Fra PYQT5.Qtwidgets import (qwidget, qcheckbox, qapplication, qvboxlayout, qlabel, qdesktopwidget)
# Definer klasse for å lage skjemaet med flere avmerkingsbokser
Klassemultiplheckbox (QWIDGET):
def __init __ (selv):
super().__i det__()
# Angi etikettteksten for brukeren
LB = Qlabel ("Velg favorittmat (er):", selv)
LB.setgeometry (20, 20, 100, 20)
LB.Flytt (20, 20)
# Lag tre avmerkingsbokser
CB1 = Qcheckbox ('Chocolate Cake', selv)
CB1.Flytt (20, 70)
CB1.Statechanged.Connect (Lambda: Selv.Valgt_value (CB1))
CB2 = Qcheckbox ('Ice-cream', selv)
CB2.Flytt (20, 90)
CB2.Statechanged.Connect (Lambda: Selv.Selected_Value (CB2))
CB3 = Qcheckbox ('Pasta', selv)
CB3.Flytt (20, 110)
CB3.Statechanged.Connect (Lambda: Selv.Selected_Value (CB3))
selv-.etikett = qlabel ('ingenting valgt')
selv-.merkelapp.Flytt (20, 150)
# Angi den vertikale QT -oppsettet
VBox = QVBoxLayout ()
VBox.AddWidget (LB)
VBox.AddWidget (CB1)
VBox.AddWidget (CB2)
VBox.AddWidget (CB3)
VBox.AddWidget (selv.merkelapp)
selv-.setslayout (vbox)
selv-.setWindowTitle ('Form med flere avkrysningsruter')
selv-.setgeometry (60, 60, 350, 200)
selv-.lbltext = "
# Vis vinduet i midten av skjermen
Vinn = selv.rammeometri ()
POS = QDESKTOPWIDGET ().Tilgjengelig GEometry ().senter()
vinne.MOVECENTER (POS)
selv-.Flytt (vinn.øverst til venstre())
selv-.forestilling()
# Definer funksjon for å lese brukerens innspill
def valgt_value (self, btn):
Hvis selv.LBLTEXT != ":
Str = selv.LBLTEXT
Strarray = Str.split (',')
selv-.lbltext = "
For Val i 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)
# Lag appobjekt og utfør appen
app = qapplication (sys.argv)
ex = multiplheckbox ()
sys.Avslutt (app.exec_ ())

Følgende vindu vises etter å ha utført skriptet. Standardverdien for den andre etiketten er “Ingenting er valgt”Og verdien av etiketten vil bli endret når en avkrysningsrute er avmerket eller ikke merket av brukeren.


I den følgende utgangen blir to avkrysningsruter sjekket av brukeren, og verdien av den andre etiketten endres til “Sjokolade, pasta”.

Konklusjon

Måten å definere en eller flere avkrysningsruter og lese verdiene til den valgte avkrysningsruten (ES) er blitt forklart i denne opplæringen ved hjelp av to enkle eksempler. Gruppene med avkrysningsruter kan defineres for å velge en bestemt avmerkingsboks fra en gruppe som ikke vises her.