Arbeiten mit Checkboxen
Verfasst: Dienstag 14. April 2015, 14:45
Hallo Leute,
ich möchte euch zwei Möglichkeiten aufzeigen, einmal meine einfache Variante, und eine Variante, die ich im Netz gefunden habe, und ich möchte zusammen mit euch versuchen zu verstehen, wie die Variante aus dem Netz zu verstehen ist, und gerne möchte ich wissen, welche Variante "besser" ist.
Meine Variante:
Ich möchte schon beim Klicken auf die Checkbox überprüfen, ob die Checkbox aktiviert oder deaktiviert wurde. Deswegen verwende ich in Zeile 1 die stateChanged()-Methode. Jedesmal, wenn das Kontrollkästchen seinen Zustand verändert, als aktiviert oder deaktiviert wird, soll ein Signal ausgesendet werden. Dieses Signal verbinde ich dann mit der _checkbox_cb()-Funktion. Und in der Funktion frage ich dann mit der isChecked()-Methode ab, ob das Kontrollkästchen aktiviert ist oder eben nicht.
Variante aus dem Netz:
Dieses Beispiel fand ich beim Stöbern, und möchte es mit eurer Hilfe zu gern verstehen. Soweit ich mich informiert habe, ist die assert-Anweisung ähnlich wie eine If-Abfrage, also so:
Nun, wie habe ich die Netz-Variante verstanden?
Zeile 3: Als Argument wird der Funktion ein state übergeben. State hat hier die Aufgabe zu überwachen(?)
Zeile 4 und 5: Die assert-Anweisung besagt, sobald beim Test die Bedingung falsch ist bzw. nicht erfüllt ist, soll ein Fehler ausgeworfen werden
Zeile 6: Hier komme ich ins Stocken.
ich möchte euch zwei Möglichkeiten aufzeigen, einmal meine einfache Variante, und eine Variante, die ich im Netz gefunden habe, und ich möchte zusammen mit euch versuchen zu verstehen, wie die Variante aus dem Netz zu verstehen ist, und gerne möchte ich wissen, welche Variante "besser" ist.
Meine Variante:
Code: Alles auswählen
self._checkbox.stateChanged.connect(self._checkbox_cb)
def _checkbox_cb(self):
if self._checkbox.isChecked():
print "Checked"
else:
print "Unchecked"
Variante aus dem Netz:
Code: Alles auswählen
self._checkbox.stateChanged.connect(self._checkbox_cb)
def _checkbox_cb(self, state):
assert QtCore.Qt.Unchecked == 0
assert QtCore.Qt.Checked == 2
assert state in (QtCore.Qt.Checked, QtCore.Qt.Unchecked, QtCore.Qt.PartiallyChecked)
print "state:", state
Code: Alles auswählen
if not _checkbox: raise AssertionError()
Zeile 3: Als Argument wird der Funktion ein state übergeben. State hat hier die Aufgabe zu überwachen(?)
Zeile 4 und 5: Die assert-Anweisung besagt, sobald beim Test die Bedingung falsch ist bzw. nicht erfüllt ist, soll ein Fehler ausgeworfen werden
Zeile 6: Hier komme ich ins Stocken.