2016-05-01 8 views
0

私は、入力ボックスに入力があり、0より大きい正の整数でなければならないユーザー入力の検証セットを作成しようとしています。これは正しく役に立つElse if try with loop

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

'elif'には' if'と同じ条件が必要です。 –

+0

@KlausD。私はどのように私は同じ行にそれを入れようとすると実行されません試し部分を実装する入力するだろう –

+0

ここでロジックを再構成する必要があります。 if/elif/elseブロックの外側のtry/exceptを移動して値を作成し、その値をelif条件で使用してみてください。 – tknickman

答えて

0

だろうフォーマットする方法についてのヘルプあなたはTHSのようなリストラを試みることができる:

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:私はMax_marksがゼロ未満でなければなりません想定し、むしろ、以下よりあなたが現在持っているので、ゼロ)。

しかし、私はライン編集でset a validatorより良いと思います。これは、最初に間違った値が入力されるのを防ぐためです。内蔵のQIntValidatorは、あなたが望むものとまったく同じように見えます。