Entry solange Prüfen bis richtige Eingabe vorhanden

Fragen zu Tkinter.
Antworten
ossi047
User
Beiträge: 46
Registriert: Donnerstag 19. Dezember 2019, 15:57

Hallo Spezialisten ich habe da ein Problem:

Ich möchte die Eingabe in einem Entryfeld prüfen (Auf Int und auf 9 Stellen mit regex. Wie man es prüft kann ich.

Mein Problem ist, das nach der Prüfung auch bei Fehler einfach weiterläuft. Ich möchte aber das dass Programm erst nach richtiger
Eingabe in diesem Entryfeld weitermacht.

Meine Prüfung:
if not re.fullmatch("^[0-9]*$", projnr.get()) and projnr.get() > "":
messagebox.showinfo("Fehler")

Sollte solange geprüft werden bis die Eingabe in Ordnung. Aber wie?
Egal was ich danach hineinschreibe z.B.: messagebox nach anklicken von Fehler
läuft das Programm weiter.

Bitte um eine kurze Info. Danke vielmals.
Benutzeravatar
__blackjack__
User
Beiträge: 12984
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@ossi047: Bei `fullmatch()` sind ^ und $ unnötig und den Teil nach ``and`` kann man sich sparen wenn man aus dem "*" ein "+" macht. Also ``if not re.fullmatch("[0-9]+", projnr.get()):``. Wobei die Teilbedingung nach dem ``and`` auch sehr, ähm, exotisch ausgedrückt ist.

Die Prüfung stimmt aber nicht mit dem Beitragstext überein, denn die Anzahl der Stellen wird nicht geprüft. Wer hat recht? Der Beitragstext oder der Code?

Natürlich läuft das Programm weiter. Wenn das danach nur passieren soll wen kein Fehler angezeigt wurde, dann muss das offensichtlich in einen ``else:``-Zweig.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
ossi047
User
Beiträge: 46
Registriert: Donnerstag 19. Dezember 2019, 15:57

Danke für die guten Tips und Infos.
Die Frage war eben wie komme ich mit dem ELSE Zweige wieder in die Entry mit dem falschen Wert
und solange bis ein richtiger Wert eingegeben wird.
Es gibt dann noch weitere Entrys.
Benutzeravatar
__blackjack__
User
Beiträge: 12984
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@ossi047: Mit dem ``else``-Zweig kommst Du da nicht wieder hin, das ist aber auch gar nicht der Sinn davon. Der wird ja nur ausgeführt wenn die Eingabe okay war. Und eben *nicht* wenn sie nicht okay war. Dann hast Du dem Benutzer ja eine Fehlermeldung gezeigt, nichts weiter passiert, und er kann die Eingabe korrigieren.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten