检查QValidator

2024-04-29 18:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

以下是我需要用到的: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qvalidator.html#State-enum

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

from PyQt4 import QtCore, QtGui
from functools import partial

class Gui(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)

        editLayout=QtGui.QFormLayout()

        edit=QtGui.QLineEdit()
        edit.setMinimumWidth(125)
        regex=QtCore.QRegExp("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
        validator=QtGui.QRegExpValidator(regex, edit)

        edit.setValidator(validator)

        editLayout.addRow("Enter Client IP:", edit)

        button=QtGui.QPushButton("Add Client")
        button.clicked.connect(partial(self.addClientButtonClicked, edit, validator))

        layout=QtGui.QVBoxLayout()
        layout.addLayout(editLayout)
        layout.addWidget(button)

        self.setLayout(layout)

    def addClientButtonClicked(self, edit, validator):
        print("ip=", edit.text())
        print(validator.State==QtGui.QValidator.Intermediate)


app=QtGui.QApplication([])
g=Gui()
g.show()
app.exec_()

期望输出:

ip= 192.168.
False
ip= 192.168.2.1
True

但我得到的是:

ip= 192.168.
False
ip= 192.168.2.1
False

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


Tags: 方法用户selfipfalse状态buttonedit