Pytonorm

Hur man använder PyQt-kryssrutan?

Hur man använder PyQt-kryssrutan?

Kryssrutan används för att välja noll eller fler alternativ från många alternativ med hjälp av det grafiska användargränssnittet. Ett formulär med en kryssruta kan skapas med hjälp av QCheckBox klass i ett Python-skript eller med QCheckBox widget av Qt Designer utan att skriva något manus.

När ett formulär med en kryssruta skapas med QCheckBox klass, då stateChanged.ansluta() funktionen kallas för att tillämpa den åtgärd som utförs av användarens inmatning. Om användaren markerade något alternativ i kryssrutan, kommer värdet på QtCore.Qt.kontrollerade kommer att vara sant. Flera kryssrutor med ett enda val som Radio Button kan skapas med QbuttonGroup klass.

Hur ett formulär med en kryssruta kan skapas genom att skriva ett Python-skript visas i denna handledning.

Nödvändiga metoder för QCheckBox

QCheckBox klass har många funktioner för att utföra olika typer av uppgifter med kryssrutan. Några av de vanligaste metoderna i denna klass beskrivs nedan:

Metodens namn Syfte
isChecked () Det returnerar ett booleskt värde. När användaren klickar för att markera kryssrutan returnerar den True, annars returnerar den False.
setChecked () Den används för att ändra status i kryssrutan. Verkligt värde är inställt för att markera kryssrutan och Falskt värde är inställt för att avmarkera kryssrutan.
text() Den används för att läsa etiketten för kryssrutan.
setText () Den används för att ställa in etiketten för kryssrutan.
isTriState () Det returnerar ett booleskt värde. Den används för att kontrollera tri-state för att veta om kryssrutan är aktiverad eller inte.
setTriState () Den används för att aktivera det tredje tillståndet i kryssrutan som anger neutralt tillstånd.

Skapa ett formulär med kryssrutan med QCheckBox-klass:

Användningen av kryssrutan visas i detta avsnitt med olika typer av exempel. Användningen av en enda kryssruta, som visas i det första exemplet, och användningen av flera kryssrutor visas i det andra exemplet.

Exempel 1: Skapa en enda kryssruta

Sättet att skapa en enda kryssruta med QCheckBox klass och läsning av ingångsvärdet för kryssrutan som tillhandahålls av användaren visas i detta exempel. De nödvändiga modulerna importeras i början av skriptet. En etikett används i ovanstående kryssruta för att tillhandahålla informationen för användaren. Om användaren klickar på kryssrutan för att markera kommer skriptet att skrivas ut, “Wow! Du gillar att programmera”, Annars skrivs manuset ut,”Å nej!, Du gillar inte programmering”.

# Importera nödvändiga moduler
importera sys
från PyQt5 importerar QtCore, QtWidgets
från PyQt5.QtWidgets importerar QMainWindow, QCheckBox, QLabel, QVBoxLayout, QDesktopWidget
# Definiera klass för att skapa formuläret med en kryssruta
klass SingleCheckbox (QMainWindow):
def __init __ (själv):
super().__i det__()
# Skapa etiketttexten för användaren
lb = QLabel ("Gillar du programmering?", själv)
lb.setGeometry (20, 20, 200, 20)
lb.flytta (20, 20)
# Skapa en kryssruta med etiketten
cb = QCheckBox ('Ja', själv)
cb.stateChanged.ansluta (själv.Kolla svar)
cb.flytta (20, 50)
# Ställ in den vertikala Qt-layouten
vbox = QVBoxLayout ()
vbox.addWidget (lb)
vbox.addWidget (cb)
# Ställ in fönstertitel och storlek
själv.setWindowTitle ('Form med enkel kryssruta')
själv.setGeometry (60, 60, 300, 100)
# Visa fönstret mitt på skärmen
vinna = själv.frameGeometry ()
pos = QDesktopWidget ().tillgängligaGeometri ().Centrum()
vinna.moveCenter (pos)
själv.flytta (vinna.övre vänstra())
själv.show()
# Definiera funktion för att kontrollera användarens inmatning
def Check_Answer (själv, tillstånd):
if state == QtCore.Qt.Kontrollerade:
tryck ("Wow! Du gillar att programmera.")
annan:
tryck ("Åh nej!, Du gillar inte programmering.")
# Skapa appobjekt och kör appen
app = QtWidgets.QApplication (sys.argv)
form = SingleCheckbox ()
app.exec ()

Följande fönster med en kryssruta visas efter att manuset har körts.


I följande utdata har användaren markerat kryssrutan två gånger och avmarkerat kryssrutan en gång.

Exempel 2: Skapa flera kryssrutor

Metoden för att skapa flera kryssrutor med QKryssruta klass och läsning av flera värden för flera kryssrutor visas i detta exempel. Två etiketter och tre kryssrutor läggs till i fönstret. Den första etiketten läggs till i början av kryssrutorna för att ge information till användaren, medan den andra etiketten läggs till i slutet av kryssrutorna för att visa värdena för den valda kryssrutan eller kryssrutorna.

# Importera nödvändiga moduler
importera sys
från PyQt5.Import av QtWidgets (QWidget, QCheckBox, QApplication, QVBoxLayout, QLabel, QDesktopWidget)
# Definiera klass för att skapa formuläret med flera kryssrutor
klass MultipleCheckbox (QWidget):
def __init __ (själv):
super().__i det__()
# Ställ in etiketttexten för användaren
lb = QLabel ("Välj din favoritmat:", själv)
lb.setGeometry (20, 20, 100, 20)
lb.flytta (20, 20)
# Skapa tre kryssrutor
cb1 = QCheckBox ('Chokladkaka', själv)
cb1.flytta (20, 70)
cb1.stateChanged.ansluta (lambda: själv.Selected_Value (cb1))
cb2 = QCheckBox ('Glass', själv)
cb2.flytta (20, 90)
cb2.stateChanged.ansluta (lambda: själv.Selected_Value (cb2))
cb3 = QCheckBox ('Pasta', själv)
cb3.flytta (20, 110)
cb3.stateChanged.ansluta (lambda: själv.Selected_Value (cb3))
själv.label = QLabel ('Nothing Selected')
själv.märka.flytta (20, 150)
# Ställ in den vertikala Qt-layouten
vbox = QVBoxLayout ()
vbox.addWidget (lb)
vbox.addWidget (cb1)
vbox.addWidget (cb2)
vbox.addWidget (cb3)
vbox.addWidget (själv.märka)
själv.setLayout (vbox)
själv.setWindowTitle ('Formulär med flera kryssrutor')
själv.setGeometry (60, 60, 350, 200)
själv.lblText = "
# Visa fönstret mitt på skärmen
vinna = själv.frameGeometry ()
pos = QDesktopWidget ().tillgängligaGeometri ().Centrum()
vinna.moveCenter (pos)
själv.flytta (vinna.övre vänstra())
själv.show()
# Definiera funktion för att läsa användarens inmatning
def Selected_Value (själv, btn):
om själv.lblText != ":
str = själv.lblText
strArray = str.dela(' ,')
själv.lblText = "
för val in strArray:
om btn.text() != val:
om själv.lblText == ":
själv.lblText = val
annan:
själv.lblText + = ',' + val
om btn.isChecked () == True:
om själv.lblText == ":
själv.lblText = btn.text()
annan:
själv.lblText + = ',' + btn.text()
annan:
om btn.isChecked () == True:
om själv.lblText == ":
själv.lblText = btn.text()
annan:
själv.lblText + = ',' + btn.text()
själv.märka.setText ('Du har valt \ n' + själv.lblText)
# Skapa appobjekt och kör appen
app = QApplication (sys.argv)
ex = MultipleCheckbox ()
sys.exit (app.exec_ ())

Följande fönster visas efter att manuset har körts. Standardvärdet för den andra etiketten är “Ingenting är valt”Och etikettens värde ändras när någon kryssruta är markerad eller avmarkerad av användaren.


I följande utdata kontrolleras två kryssrutor av användaren och värdet på den andra etiketten ändras till “Choklad, pasta”.

Slutsats

Sättet att definiera en eller flera kryssrutor och läsa värdena för de markerade kryssrutorna har förklarats i denna handledning med två enkla exempel. Grupperna med kryssrutor kan definieras för att markera en viss kryssruta från en grupp som inte visas här.

OpenTTD-handledning
OpenTTD är ett av de mest populära affärssimuleringsspelen där ute. I det här spelet måste du skapa en underbar transportaffär. Du kommer dock att bör...
SuperTuxKart för Linux
SuperTuxKart är en fantastisk titel som är utformad för att ge dig Mario Kart-upplevelsen gratis på ditt Linux-system. Det är ganska utmanande och rol...
Battle for Wesnoth Tutorial
Slaget om Wesnoth är ett av de mest populära open source-strategispel som du kan spela just nu. Det här spelet har inte bara utvecklats under mycket l...