如何为QtGui.QInputDialog.GetText()进行IP验证

vdk*_*ian 1 pyqt pyqt4 pyside python-2.7

我在PySide中编写代码,其中包含一个"更改IP"按钮.单击该按钮时,会出现一个包含文本框的对话框.我想在文本框上验证只接受IP地址.

我正在使用此代码:

QtGui.QInputDialog.getText(self, "Title", "Enter IP: ")
Run Code Online (Sandbox Code Playgroud)

Ale*_*Vhr 5

AFAIR,QInputDialog.getText不支持动态验证,但如果您愿意滚动自己的对话框,可以使用QRegExpValidator

1.在互联网上查找所需的正则表达式(例如,这里).看到它看起来像

^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ 对于IP4

  1. 创建QRegExp对象,如下所示:

rx = QRegExp("regular_expression_string_from_step_1")

3.创建QRegExpValidator实例并将rx对象传递给它的构造函数,如下所示:

my_validator = QRegExpValidator(rx) 
Run Code Online (Sandbox Code Playgroud)
  1. 呼叫 my_line_edit.setValidator(my_validator)

就是这样,my_line_edit现在应该拒绝输入无效的IP地址.如果你不想这样做,你可以使用python自己的re moodule进行事后验证,使用步骤1中的正则表达式.