检查输入 PyQt4
我想检查用户输入的内容。如果用户输入的是一个整数,就要抛出一个错误,提示用户重新输入一个字符串,这样“确定”按钮就会被拒绝。如果用户什么都没有输入,也要有同样的处理,也就是不允许没有字符串的输入。
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.btn = QtGui.QPushButton('Dialog', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.showDialog)
self.le = QtGui.QLineEdit(self)
self.le.move(130, 22)
self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Input dialog')
self.show()
def showDialog(self):
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog',
'Enter your name:')
if ok:
self.le.setText(str(text))
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我该如何将这个应用到上面的代码中呢?
我正在使用Pyqt4,适用于Python 3。
提前谢谢你!
1 个回答
0
我没有PyQt4,但我想我的代码示例应该还是适用的。不过无论如何,你给出的代码接受的是一个字符串作为名字。如果你检查这个名字是否是整数,那它肯定不会是整数,因为你接受的答案是字符串。
至于空白的情况,这里是我的代码:
#Start a while loop to repeatedly ask.
while True:
#A flag to help with detecting if it's a blank string.
noneFlag = True
#The equivalent of your
name = input("Your name: ")
#A for loop - It checks if the string is nothing but blanks, or is nothing.
for char in name:
if char != " ":
noneFlag = False
break
#Responds on if the name is blank or not.
if noneFlag:
print("Name field is blank.")
else:
#Breaks the loop.
break
注意:你这一行:
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog',
'Enter your name:')
相当于我的输入语句。
--- 编辑 ---
好的,这里是你想要的代码;不过要记住,除非你把代码改成接受整数类型的变量,否则它永远不会把它当作整数来看。
if noneFlag:
print("Name field is blank.")
elif isinstance(name, int):
print("Name field is an int.")
else:
break
简单来说,我想说的是,如果一个变量是字符串,Python是无法检测它是否是数字的。例如:“1234567890”作为一个字符串是不会被视为整数的,因为它的实际类型是字符串。