Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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 检查QValidator';s州_Python_Pyqt - Fatal编程技术网

Python 检查QValidator';s州

Python 检查QValidator';s州,python,pyqt,Python,Pyqt,首先,对不起我的英语不好 我正在尝试从用户处获取IP。我正在使用QRegExpValidator检查用户输入。验证程序成功地阻止不需要的字符。但我想知道,当用户点击按钮时,它是一个正确的IP。当然,我可以手动检查文本,但似乎有更好的方法,使用QValidator的状态枚举。QValidator。可接受是我需要检查的。但我不知道我怎么用它 以下是我需要使用的: 下面是我尝试过的(从主程序中提取): 期望输出: ip= 192.168. False ip= 192.168.2.1 True 但这

首先,对不起我的英语不好

我正在尝试从用户处获取IP。我正在使用QRegExpValidator检查用户输入。验证程序成功地阻止不需要的字符。但我想知道,当用户点击按钮时,它是一个正确的IP。当然,我可以手动检查文本,但似乎有更好的方法,使用QValidator的状态枚举。QValidator。可接受是我需要检查的。但我不知道我怎么用它

以下是我需要使用的:

下面是我尝试过的(从主程序中提取):

期望输出:

ip= 192.168.
False
ip= 192.168.2.1
True
但这就是我得到的:

ip= 192.168.
False
ip= 192.168.2.1
False

检查QValidator状态的正确方法是什么?

您在这里做的事情不对。比较:

validator.State==QtGui.QValidator.Intermediate
将枚举类型与其值之一进行比较-这将始终是
False

改用
验证
方法:

def addClientButtonClicked(self, edit, validator):
    print("ip=", edit.text())
    print(validator.validate(edit.text(), 0))
那么
192.168.2.1
的结果是:

('ip=', PyQt4.QtCore.QString(u'192.168.2.1'))
(2, 0)
validate
返回的元组的第一个元素是状态,您可以将其与
QValidator
的各种状态进行比较:

def addClientButtonClicked(self, edit, validator):
    state, pos = validator.validate(edit.text(), 0)
    print(state == QtGui.QValidator.Acceptable)
192.168.2.1

打印
True
,谢谢:)。它工作得很好:)。我有一个(可能是愚蠢的)问题,为什么状态对象有“real”、“imag”、“conjugate”等函数,它们是从复数派生的,为什么@utdmr:很有趣(虽然不相关)-我真的不知道,也许是PyQt实现的某个工件
def addClientButtonClicked(self, edit, validator):
    state, pos = validator.validate(edit.text(), 0)
    print(state == QtGui.QValidator.Acceptable)