检查输入Pyqt4

时间:2014-04-11 19:31:53

标签: python pyqt pyqt4

我想检查用户是否输入了一个字符串,如果一个整数被激活,那么就会抛出一个错误,要求用户重新输入一个字符串,以便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.

提前致谢

1 个答案:

答案 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不会被归类为整数,因为实际类型是字符串。