我想检查用户是否输入了一个字符串,如果一个整数被激活,那么就会抛出一个错误,要求用户重新输入一个字符串,以便okay按钮被拒绝我也想要同样如果没有任何东西被输入用户没有字符串。
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.
提前致谢
答案 0 :(得分: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:')
相当于我的输入语句。
---编辑---
好的,这是您想要的代码;但请记住,除非您更改为代码以接受变量作为int,否则它永远不会将其视为整数。
if noneFlag:
print("Name field is blank.")
elif isinstance(name, int):
print("Name field is an int.")
else:
break
从本质上讲,我所说的是Python不能也不会检测变量是否为数字(如果它在字符串中)。例如:" 1234567890"因为STRING不会被归类为整数,因为实际类型是字符串。