2016-05-01 4 views
0

Also ich versuche, einen Satz von Validierung für Benutzereingaben zu erstellen, in denen das Eingabefeld eine Eingabe eingegeben haben muss und eine positive Ganzzahl größer als 0. Ich bekomme Syntaxfehler um die Elif Teile, any helfen, wie dies wäre richtig hilfreichElse if loop mit try

def MDConfirm_btn_clicked(self,MGStudent_drop): 
    ##Max marks input 
    Max_marks=(self.MDMax_inp.text()) 

    if len(str(Max_marks))==0: #check if length is the same as 0 
     Presence_error_open.show()#call presence error prompt if condtion is met 

    elif: 
     try: 
     Max_marks=int(self.MDMax_inp.text()) #take input from maximim marks entry 
     except ValueError:#if python detects error in value type flag error 
      Char_error_open.show()  

    elif int((Max_marks)) <=0: #check is value is less than 0 
     Char_error_open.show() 

    else: 
     Max_marks=m1 
+2

Ein 'elif' muss mit einer Bedingung kommen, genau wie' if'. –

+0

@KlausD. Wie würde ich eingeben, implementieren Sie den Versuch Teil, aber es wird nicht ausgeführt, wenn ich es auf die gleiche Linie setzen –

+0

Sie müssen die Logik hier umstrukturieren. Versuchen Sie, try/except außerhalb des if/elif/else-Blocks zu verschieben, um einen Wert zu erstellen, und verwenden Sie diesen Wert dann in der elif-Bedingung. – tknickman

Antwort

0

zu formatieren, können Sie versuchen, wie ths Umstrukturierung:

def MDConfirm_btn_clicked(self, MGStudent_drop): 
    Max_marks = self.MDMax_inp.text() 
    if not Max_marks: 
     Presence_error_open.show() 
    else: 
     try: 
      Max_marks = int(Max_marks) 
      if Max_marks < 0: 
       raise ValueError 
     except ValueError: 
      Char_error_open.show() 
     else: 
      Max_marks = m1 

(NB: ich nahm Max_marks kleiner als Null sein sollte, anstatt gleich oder kleiner als Null, wie du es gerade hast).

Aber ich denke, es wäre besser, set a validator auf der Linie-Edit, als dies würde einfach verhindern, dass falsche Werte an erster Stelle eingegeben werden. Die eingebaute QIntValidator scheint genau das zu tun, was Sie wollen.