Во-первых, извините за мой плохой английский.
Я пытаюсь получить IP от пользователя. Я использую QRegExpValidator для проверки ввода пользователя. Валидатор успешно блокирует нежелательные символы. Но я хочу узнать, что это правильный IP-адрес, когда пользователь нажимает кнопку. Конечно, я могу проверить текст вручную, но, кажется, есть лучший способ, используя перечисление состояния QValidator. 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?