Seite 1 von 1

Fehlermeldung bei except anzeigen

Verfasst: Donnerstag 19. Oktober 2017, 12:41
von LavaDo
Hallo zusammen,

ich bin mal wieder auf ein kleines Problem gestoßen.
Ich möchte eine Abfrage mit mehreren TextCtrl Feldern laufen lassen und wenn der Wert in dem Feld kein float ist, eine Fehlermeldung anzeigen lassen.
Hierfür habe ich dann folgendes geschrieben:

Code: Alles auswählen

def knopf(evt):

    def Info(parent, message, caption = 'Fehlerhafte Werte'):
        dlg = wx.MessageDialog(parent, message, caption, wx.OK | wx.ICON_INFORMATION)
        dlg.ShowModal()
        dlg.Destroy()
    
    def uebernehmen(textctrl):
        try:
            value = float(textctrl.GetValue())
            print ("Richtig")

        except ValueError:
            print ("Falsch")
            Info(p, 'Der Wert enthält einen Fehler')
            
    uebernehmen(viskositaet)
    uebernehmen(masse_kugel)
    uebernehmen(durchmesser_kugel)
    uebernehmen(dichte_fluessigkeit)
    uebernehmen(anfangsgeschwindigkeit)
    uebernehmen(anfangshoehe)
Das Problem hierbei ist allerdings, dass bei jedem Wert der falsch ist eine Fehlermeldung zustande kommt.
Warum das so ist weiß ich, jedoch wie ich es beheben kann nicht. :K

Re: Fehlermeldung bei except anzeigen

Verfasst: Donnerstag 19. Oktober 2017, 13:16
von __deets__
Der Code macht ja eh nix sinnvolles - da du value ja gar nicht weiter behandelst.

Aber dein Muster kannst du ja auch so anwenden:

Code: Alles auswählen

def convert(ctrl):
      return float(ctrl.GetValue())

try:
     viskositaet = convert(viskositaet_ctrl)
     ...
except ValueError:
     # Fehlermeldung
Es sind natuerlich noch andere Herangehensweisen denkbar, wenn du zB in deiner Fehlermeldung zurueckgeben willst, *welche* Werte falsch sind:

Code: Alles auswählen

errors = []
values = {}
for name, ctrl in zip(["viskositaet", ..."], [viskositaetctrl, ...]):
     try:
           values[name] = convert(ctrl)
     except ValueError:
          errors.append(name)
if errors:
    ...

Re: Fehlermeldung bei except anzeigen

Verfasst: Freitag 20. Oktober 2017, 07:12
von LavaDo
Vielen Dank.
Ich habe das jetzt wie im ersten Code gemacht, da ich den zweiten nicht ganz verstehe.

Kannst du den bitte erklären?

Re: Fehlermeldung bei except anzeigen

Verfasst: Freitag 20. Oktober 2017, 09:53
von __deets__
Wenn man nur eine Fehlermeldung anzeigt, bare gleichzeitig dem Nutzer vermitteln will *welche* Felder falsch sind, muss man das ja irgendwie aufsammeln, und dann aggregiert darstellen. Das habe ich angerissen. Was genau verstehst du denn nicht?