Seite 1 von 1

Input validieren - Alert anzeigen - und dann die Funktion unterbrechen - Wie vorgehen

Verfasst: Samstag 9. Juni 2018, 20:40
von SnakeBite
Hallo.

Ich baue gerade meinen eignen Email Client. Das momentane Logik/Denk Problem:

Ich habe ein paar GtkEntry Felder. Diese sollen auf grobe Validität der Email geprüft werden. Sollte was nicht passen, dann soll ein GtkMessageDialog ausgegeben werden und die restliche Funktion abgebrochen werden. Aber wie gehe ich dabei vor?

Grob sieht meine App im Moment so aus:

Code: Alles auswählen

def datenabgreifen():
	to = get...
	cc = get...
	bcc = get...
	subject = get....
	body = get...
	send_mail(to, cc, bcc, subject, body)
Was ich nun theoretisch möchte:

Code: Alles auswählen

def datenabgreifen():
	to = get...
		if not vlidate_email():
		GtkMessageDialog
		break  <--- Ja ich weiss das geht gar nicht
	cc = get...
	bcc = get...
	subject = get....
	body = get...
	send_mail(to, cc, bcc, subject, body)
Die selben Überprüfungen natürlich auch für CC und BCC.

Wie gehe ich hier denn am Besten vor? Try/except geht so meines Wissens nicht? eine Exception werfen will ich nicht, da ich ja das GtkMessageDialog angezeigt haben will. Ich bin hier wirklich ratlos.

Wie würdet Ihr das lösen?

Re: Input validieren - Alert anzeigen - und dann die Funktion unterbrechen - Wie vorgehen

Verfasst: Samstag 9. Juni 2018, 20:44
von __blackjack__
Zuerst mal mit einer Schleife. Statt da jetzt hinter jedes `get…` den nahezu gleichen Code zu schreiben. Und dann kannst Du eine Funktion/Methode durch ``return`` beenden.

Re: Input validieren - Alert anzeigen - und dann die Funktion unterbrechen - Wie vorgehen

Verfasst: Samstag 9. Juni 2018, 20:47
von SnakeBite
__blackjack__ hat geschrieben: Samstag 9. Juni 2018, 20:44 Und dann kannst Du eine Funktion/Methode durch ``return`` beenden.
Ahhhh natürlich. Einfach return False. Oh man, da hätte ich auch selbst drauf kommen müssen. Danke!

Re: Input validieren - Alert anzeigen - und dann die Funktion unterbrechen - Wie vorgehen

Verfasst: Samstag 9. Juni 2018, 20:55
von __blackjack__
Nein, einfach nur ``return``. Wozu sollte das `False` gut sein? Denn dann müsste man ja auch einen ``return True``-Fall haben und einen Aufrufer der das dann auswertet.

Re: Input validieren - Alert anzeigen - und dann die Funktion unterbrechen - Wie vorgehen

Verfasst: Samstag 9. Juni 2018, 21:01
von SnakeBite
OK, dann eben einfach so. Ich dachte es macht keinen Unterschied ob False oder None return-ed wird. Aber dann einfach nur return. :-)

Re: Input validieren - Alert anzeigen - und dann die Funktion unterbrechen - Wie vorgehen

Verfasst: Samstag 9. Juni 2018, 21:08
von __blackjack__
Du kannst das Problem aber auch vorlagern in dem Du schon bei der Eingabe validierst und dir das merkst und dem Benutzer auch gleich Rückmeldung gibst, beispielsweise durch die Hintergrundfarbe des Eingabefelds.

Re: Input validieren - Alert anzeigen - und dann die Funktion unterbrechen - Wie vorgehen

Verfasst: Sonntag 10. Juni 2018, 14:28
von ThomasL
Eventuell wäre ja eine try: except: else: finally: Lösung für dich interessant,
schau mal hier: https://py-tutorial-de.readthedocs.io/d ... rrors.html

Re: Input validieren - Alert anzeigen - und dann die Funktion unterbrechen - Wie vorgehen

Verfasst: Montag 11. Juni 2018, 17:58
von SnakeBite
ThomasL hat geschrieben: Sonntag 10. Juni 2018, 14:28 Eventuell wäre ja eine try: except: else: finally: Lösung für dich interessant,
schau mal hier: https://py-tutorial-de.readthedocs.io/d ... rrors.html
Ein guter Tipp, aber nicht ganz das was ich in dem Fall brauche. Ich benötige immer eine konkrete Fehlermeldung und den "Abbruch" (besser: Nicht weiter ausführen) der Funktion.