Come utilizzare la casella di controllo Pyqt?

Come utilizzare la casella di controllo Pyqt?

La casella di controllo viene utilizzata per selezionare zero o più opzioni da molte opzioni utilizzando l'interfaccia utente grafica. Un modulo con una casella di controllo può essere creato utilizzando Qcheckbox classe in uno script Python o usando il Qcheckbox widget di Qt Designer senza scrivere alcuna sceneggiatura.

Quando viene creato un modulo con una casella di controllo utilizzando Qcheckbox classe, quindi Statechanged.Collegare() La funzione è chiamata per applicare l'azione eseguita dall'input dell'utente. Se l'utente ha verificato qualsiasi opzione di controllo, allora il valore di Qtcore.Qt.controllato sarà vero. Casole di controllo multiple con una singola selezione come il pulsante di opzione è possibile utilizzare QButtongRoup classe.

In questo tutorial è mostrato come un modulo con una casella di controllo scrivendo uno script Python.

Metodi necessari di Qcheckbox

Qcheckbox La classe ha molte funzioni per svolgere diversi tipi di attività con la casella di controllo. Alcuni metodi più comunemente usati di questa classe sono descritti di seguito:

Nome metodo Scopo
ischecked () Restituisce un valore booleano. Quando l'utente fa clic per controllare la casella di controllo, restituisce vero, altrimenti, restituisce false.
setchecked () Viene utilizzato per modificare lo stato della casella di controllo. Il valore vero è impostato per rendere la casella di controllo e il valore falso è impostato per rendere l'inseguizione della casella di controllo.
testo() Viene utilizzato per leggere l'etichetta della casella di controllo.
setText () Viene utilizzato per impostare l'etichetta della casella di controllo.
istristate () Restituisce un valore booleano. Viene utilizzato per controllare il tri-state per sapere se la casella di controllo è abilitata o meno.
settristate () Viene utilizzato per abilitare il terzo stato della casella di controllo che indica lo stato neutro.

Crea un modulo con la casella di controllo utilizzando la classe Qcheckbox:

Gli usi della casella di controllo sono mostrati in questa sezione utilizzando diversi tipi di esempi. L'uso di una singola casella di controllo, come mostrato nel primo esempio, e l'uso di più caselle di controllo è mostrato nel secondo esempio.

Esempio 1: creazione di una singola casella di controllo

Il modo di creare una singola casella di controllo utilizzando Qcheckbox classe e lettura del valore di input della casella di controllo fornita dall'utente sono mostrati in questo esempio. I moduli necessari vengono importati all'inizio dello script. Un'etichetta viene utilizzata nella casella di controllo sopra per fornire le informazioni per l'utente. Se l'utente fa clic sulla casella di controllo per verificare, lo script verrà stampato, "Oh! Ti piace la programmazione", Altrimenti lo script stamperà,"Oh no!, Non ti piace la programmazione".

# Importa i moduli necessari
Import sys
Da Pyqt5 Import Qtcore, Qtwidgets
da pyqt5.QtWidgets Importa QmainWindow, Qcheckbox, Qlabel, QvBoxLayout, QdesktopWidget
# Definisci la classe per la creazione del modulo con una singola casella di controllo
Class SingleCheckbox (Qmainwindow):
def __init __ (self):
super().__dentro__()
# Crea il testo dell'etichetta per l'utente
lb = qlabel ("Ti piace la programmazione?", se stesso)
libbre.Setgeometry (20, 20, 200, 20)
libbre.Muovi (20, 20)
# Crea una casella di controllo con l'etichetta
CB = Qcheckbox ('Sì', self)
Cb.Statechanged.Connetti (Self.Controlla la risposta)
Cb.Sposta (20, 50)
# Imposta il layout QT verticale
vbox = qvBoxLayout ()
vbox.ADDWIDGET (LB)
vbox.AddWidget (CB)
# Imposta il titolo e le dimensioni della finestra
se stesso.setWindowTitle ("Modulo con singola casella di controllo")
se stesso.Setgeometry (60, 60, 300, 100)
# Visualizza la finestra al centro dello schermo
Win = Self.frameGeometry ()
pos = qdesktopwidget ().DisponitGeometry ().centro()
vincita.MoveCenter (POS)
se stesso.mossa (vincere.a sinistra in alto())
se stesso.spettacolo()
# Definisci la funzione per controllare l'input dell'utente
def check_answer (self, stato):
se stato == qtcore.Qt.Controllato:
stampa (wow! Ti piace la programmazione.")
altro:
Stampa ("Oh no!, Non ti piace la programmazione.")
# Crea oggetto app ed esegui l'app
app = qtwidgets.Qapplicazione (sys.argv)
form = singleCheckBox ()
app.Exec ()

La seguente finestra con una casella di controllo verrà visualizzata dopo aver eseguito lo script.


Nel seguente output, l'utente ha controllato due volte la casella di controllo e non controllato la casella di controllo una volta.

Esempio 2: creazione di più caselle di controllo

Il metodo per creare più caselle di controllo utilizzando Qcheckbox in questo esempio sono mostrati più valori multipli delle caselle di controllo multiple. Due etichette e tre caselle di controllo vengono aggiunte alla finestra. La prima etichetta viene aggiunta all'inizio delle caselle di controllo per fornire informazioni per l'utente, mentre la seconda etichetta viene aggiunta alla fine delle caselle di controllo per visualizzare i valori della casella di controllo o delle caselle di controllo selezionate.

# Importa i moduli necessari
Import sys
da pyqt5.QtWidgets Import (Qwidget, Qcheckbox, Qapplication, QvBoxLayout, QLabel, QdesktopWidget)
# Definisci la classe per la creazione del modulo con più caselle di controllo
Classe MultipleCheckBox (Qwidget):
def __init __ (self):
super().__dentro__()
# Imposta il testo dell'etichetta per l'utente
lb = qlabel ("Seleziona i tuoi cibi preferiti:", self)
libbre.Setgeometry (20, 20, 100, 20)
libbre.Muovi (20, 20)
# Crea tre caselle di controllo
CB1 = QCheckBox ('Chocolate Cake', Self)
CB1.Sposta (20, 70)
CB1.Statechanged.Connect (Lambda: Self.Selected_Value (CB1))
CB2 = QCheckBox ('gelato', self)
CB2.Sposta (20, 90)
CB2.Statechanged.Connect (Lambda: Self.Selected_Value (CB2))
CB3 = Qcheckbox ('pasta', self)
CB3.Sposta (20, 110)
CB3.Statechanged.Connect (Lambda: Self.Selected_Value (CB3))
se stesso.etichetta = qLabel ('Nothing Selected')
se stesso.etichetta.Sposta (20, 150)
# Imposta il layout QT verticale
vbox = qvBoxLayout ()
vbox.ADDWIDGET (LB)
vbox.AddWidget (CB1)
vbox.AddWidget (CB2)
vbox.AddWidget (CB3)
vbox.AddWidget (sé.etichetta)
se stesso.SetLayout (VBox)
se stesso.setWindowTitle ("Modulo con più caselle di controllo")
se stesso.Setgeometry (60, 60, 350, 200)
se stesso.lbltext = "
# Visualizza la finestra al centro dello schermo
Win = Self.frameGeometry ()
pos = qdesktopwidget ().DisponitGeometry ().centro()
vincita.MoveCenter (POS)
se stesso.mossa (vincere.a sinistra in alto())
se stesso.spettacolo()
# Definisci la funzione per leggere l'input dell'utente
Def Selected_Value (self, btn):
se sé.lbltext != ":
str = self.lbltext
Straray = str.diviso(' ,')
se stesso.lbltext = "
Per Val in Straray:
Se btn.testo() != Val:
se sé.lbltext == ":
se stesso.lbltext = val
altro:
se stesso.lbltext + = ',' + val
Se btn.ischecked () == vero:
se sé.lbltext == ":
se stesso.lbltext = btn.testo()
altro:
se stesso.lbltext + = ',' + btn.testo()
altro:
Se btn.ischecked () == vero:
se sé.lbltext == ":
se stesso.lbltext = btn.testo()
altro:
se stesso.lbltext + = ',' + btn.testo()
se stesso.etichetta.setText ('hai selezionato \ n' + self.lbltext)
# Crea oggetto app ed esegui l'app
app = Qapplication (sys.argv)
ex = multipleCheckBox ()
sys.uscita (app.Exec_ ())

La finestra seguente verrà visualizzata dopo aver eseguito lo script. Il valore predefinito della seconda etichetta è "Niente è selezionato"E il valore dell'etichetta verrà modificato quando qualsiasi casella di controllo viene controllata o deselezionata dall'utente.


Nel seguente output, due caselle di controllo vengono controllate dall'utente e il valore della seconda etichetta viene modificato in “Cioccolato, pasta".

Conclusione

Il modo di definire una o più caselle di controllo e leggere i valori delle caselle di controllo selezionate sono stati spiegati in questo tutorial utilizzando due semplici esempi. I gruppi di caselle di controllo possono essere definiti per selezionare una particolare casella di controllo da un gruppo che non viene mostrato qui.