Fehlermeldung bei except anzeigen

Plattformunabhängige GUIs mit wxWidgets.
LavaDo
User
Beiträge: 5
Registriert: Freitag 6. Oktober 2017, 08:19

Fehlermeldung bei except anzeigen

Beitragvon LavaDo » Donnerstag 19. Oktober 2017, 12:41

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
Benutzeravatar
__deets__
User
Beiträge: 2177
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Fehlermeldung bei except anzeigen

Beitragvon __deets__ » Donnerstag 19. Oktober 2017, 13:16

Der Code macht ja eh nix sinnvolles - da du value ja gar nicht weiter behandelst.

Aber dein Muster kannst du ja auch so anwenden:


  1. def convert(ctrl):
  2.       return float(ctrl.GetValue())
  3.  
  4. try:
  5.      viskositaet = convert(viskositaet_ctrl)
  6.      ...
  7. except ValueError:
  8.      # Fehlermeldung


Es sind natuerlich noch andere Herangehensweisen denkbar, wenn du zB in deiner Fehlermeldung zurueckgeben willst, *welche* Werte falsch sind:

  1. errors = []
  2. values = {}
  3. for name, ctrl in zip(["viskositaet", ..."], [viskositaetctrl, ...]):
  4.     try:
  5.           values[name] = convert(ctrl)
  6.     except ValueError:
  7.          errors.append(name)
  8. if errors:
  9.    ...
LavaDo
User
Beiträge: 5
Registriert: Freitag 6. Oktober 2017, 08:19

Re: Fehlermeldung bei except anzeigen

Beitragvon LavaDo » Freitag 20. Oktober 2017, 07:12

Vielen Dank.
Ich habe das jetzt wie im ersten Code gemacht, da ich den zweiten nicht ganz verstehe.

Kannst du den bitte erklären?
Benutzeravatar
__deets__
User
Beiträge: 2177
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Fehlermeldung bei except anzeigen

Beitragvon __deets__ » Freitag 20. Oktober 2017, 09:53

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?

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder