2
首先,抱歉我的英文不好。檢查QValidator的狀態
我試圖從用戶那裏得到一個IP。我正在使用QRegExpValidator檢查用戶輸入。驗證程序成功阻止不需要的字符。但是當用戶點擊按鈕時,我想知道它是一個合適的IP。當然,我可以手動檢查文本,但似乎有更好的方法,使用QValidator的狀態枚舉。 QValidator.Acceptable是我需要檢查的。但我想不通我怎麼可以用它
以下是我需要使用: 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狀態的正確方法是什麼?
謝謝:)。它工作完美:)。我有一個(也許是愚蠢的)問題,爲什麼狀態對象具有「真實」,「成像」,「共軛」等功能,它們是從複數得出的,爲什麼? :) – utdemir 2011-04-24 12:46:22
@utdmr:有趣(儘管無關) - 我真的不知道,也許這是PyQt的實現 – 2011-04-24 12:53:21
的一些神器,理解,再次感謝。 – utdemir 2011-04-24 12:58:43