Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅在Python中检测数字的WXTEXTCRL代码_Python_Methods_Digits_Wxtextctrl - Fatal编程技术网

仅在Python中检测数字的WXTEXTCRL代码

仅在Python中检测数字的WXTEXTCRL代码,python,methods,digits,wxtextctrl,Python,Methods,Digits,Wxtextctrl,我构造了一个WXTEXTCRL,如果用户只输入数字,我希望返回true 以下是我的Python代码: @staticmethod def isAllDigits(s): for char in list(s): if not char.isdigit(): return False else: break return True 我调用isAllDigits的代码是: if s

我构造了一个WXTEXTCRL,如果用户只输入数字,我希望返回true

以下是我的Python代码:

@staticmethod    
def isAllDigits(s):

    for char in list(s):
        if not char.isdigit():
            return False
        else:
            break
    return True 
我调用isAllDigits的代码是:

     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方法并不是只检测数字。例如,如果我在文本Ctrl中输入“3k5”,我的程序会返回“3k5”是所有数字并且是有效的,这是不正确的

我的isAllDigits方法有什么问题

你可以这样做

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

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

或者在您的方法中删除
else。。中断
部分

此尝试。。。除了在pyqt4 Qlineedit上为我工作之外

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”之类的错误。它会忽略错误的字符,并将光标移动到行尾。您可能需要对其进行调整以适应您的应用程序。

这非常有效!此外,如果我在“3.4”中输入,上述代码会将十进制检测为非数字。如何为小数编写异常代码?Cheers@PhilipMcQuitty尝试将它们转换为整数。如果它们不转换为非数字,请使用try:f=int(s)retrun true除了:return false我应该将其作为isAllDigits方法的一部分吗?