在Python中只检测数字的wxtctrl代码

2024-09-19 23:44:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我构造了一个wxtctrl,如果用户只输入数字,我想返回true。你知道吗

下面是我的Python代码:

@staticmethod    
def isAllDigits(s):

    for char in list(s):
        if not char.isdigit():
            return False
        else:
            break
    return True 

我的代码调用的是所有数字:

     if self.firstNum.IsEmpty() or not self.isAllDigits(self.firstNum.GetValue()):
        self.dataInputIsValid = False 
        msgStr = "Your first number is invalid, please enter only enter digits and do not leave the field blank."
        wx.MessageBox(msgStr)

    if self.secondNum.IsEmpty() or not self.isAllDigits(self.secondNum.GetValue()):
        self.dataInputIsValid = False 
        msgStr = "Your second number is invalid, please enter only enter digits and do not leave the field blank."
        wx.MessageBox(msgStr)

出于某种原因,我的isAllDigits方法并不是只检测数字。例如,如果我要在textCtrl中输入“3k5”,我的程序返回“3k5”是所有数字并且是有效的,这是不正确的。你知道吗

我的isAllDigits方法有什么问题?你知道吗


Tags: or代码selffalsereturnifnot数字
2条回答

这次尝试。。。除了在pyqt4qlineedit上为我工作

def textBoxNumbersOnly(QlineEdit):
    if QlineEdit.text()!="-" and QlineEdit.text()!="+":
        try:
            float(QlineEdit.text())
        except ValueError:
            QlineEdit.setText(QlineEdit.text()[:-1])
            QlineEdit.setCursorPosition = len(QlineEdit.text())
    pass

如果以“-”或“+”开头,则不会引发异常。它允许浮动;不允许出现错误,如“3.14.14”。它省略了错误的字符并将光标移到行的末尾。你可能需要调整它来为你的应用程序工作。你知道吗

你可以这样做

@staticmethod    
def isAllDigits(s):
    s=s.split('.')
    if len(s)>2:
       return false

    return all( s.isdigit() for char in s)

或者在您的方法中删除else .. break部分

相关问题 更多 >