仅在Python中检测数字的WXTEXTCRL代码
我构造了一个WXTEXTCRL,如果用户只输入数字,我希望返回true 以下是我的Python代码:仅在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
@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方法的一部分吗?