ich habe ein verrücktes Problem mit einem Programm, das globale Variablen nutzt. Eins vorweg: Bitte jetzt keinen Shitstorm oder Ähnliches. Ich weiß, dass man das eigentlich nicht macht. Aber trotzdem hätte ich das gerne so zu Ende gemacht, weil ich den inzwischen 8-seitigen Code nicht aufgeben möchte.
Also, ich habe eine Maske, wo Mitarbeiter aus einer Datei geladen wurden. Also die sind schon ausgewählt. In der Maske kann man dann Monat und Krankheitstage pro Monat eingeben. Wenn man in der Maske auf den Button "Weiter" klickt, kommt der nächste Mitarbeiter etc... Wenn alle ausgewählten Arbeiter, die zuvor in der Liste "Treffer" gespeichert wurden, durchgelaufen sind, erscheint als Ausgabe "fertig". Das klappt auch wunderbar, aber wenn man das ein zweites, drittes Mal durchführt, zählt der globale trefferzähler nicht mehr richtig. Beim ersten Klick auf weiter wird er dann um 2 erhöht anstatt um eins, beim dritten mal um 2. Ich bin jedenfalls völlig ratlos und hoffe, dass meine Erklärungen einigermaßen verständlich waren (ich sitz grad da und mir brummt der Schädel).
Hier mal der betreffende Code:
Code: Alles auswählen
def KrankentageEingeben():
global trefferzähler
trefferzähler = 0
kursladen.tableWidget.clear()
eingabe.comboBoxTage.clear()
eingabe.show()
eingabe.comboBoxTage.addItems(["1","2","3","4","5","mehr als 5"])
eingabe.labelName.setText(Treffer[trefferzähler].name + ", " + Treffer[trefferzähler].vorname)
eingabe.ButtonWeiter.clicked.connect(ButtonWeiter)
def ButtonWeiter():
global trefferzähler
print (trefferzähler)
var = len(Treffer)-1
if trefferzähler >= var:
print ("fertig")
Treffer[trefferzähler].tragetageiniiste ein(eingabe.lineEditMonat.text(), eingabe.comboBoxTage.currentText())
Dateilöschen()
for zähler in range(0, len(ensemble)):
ensemble[zähler].BearbeiteteDatenSpeichern
trefferzähler = 0
eingabe.lineEditMonat.clear()
eingabe.close()
kursladen1()
else:
Treffer[trefferzähler].tragetageinlisteein(eingabe.lineEditMonat.text(), eingabe.comboBoxTage.currentText())
trefferzähler = trefferzähler +1
eingabe.labelName.setText(Treffer[trefferzähler].name +", " +Treffer[trefferzähler].vorname)