如果循环尝试

时间:2016-05-01 17:45:37

标签: python pyqt pyqt4

所以我试图为用户输入创建一组验证,其中输入框必须输入一个输入并且是一个大于0的正整数。我在elif部分周围出现语法错误,有关如何格式化的任何帮助这正确有用

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

1 个答案:

答案 0 :(得分:0)

您可以尝试重组:

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

(注意:我假设Max_marks应该小于零,而不是等于或小于零,正如你现在所拥有的那样。)

但是,我认为在行编辑上set a validator会更好,因为这样可以防止首先输入错误的值。内置的QIntValidator似乎完全符合您的要求。