【发布时间】:2020-02-05 06:39:59
【问题描述】:
我正在尝试使用QValidator 后代(实际上在 PyQt5 中,但这不重要)来验证一系列行编辑。
一小段摘录是:
class IPv4(QWidget):
def __init__(self):
super(IPv4, self).__init__()
uic.loadUi('ipv4.ui', self)
self.address.inputMask = ''
rx = QRegularExpression(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
self.address.setValidator(QRegularExpressionValidator(rx, self.address))
self.netmask.setValidator(QRegularExpressionValidator(rx, self.netmask))
self.gateway.setValidator(QRegularExpressionValidator(rx, self.gateway))
self.broadcast.setValidator(QRegularExpressionValidator(rx, self.broadcast))
self.dns1.setValidator(QRegularExpressionValidator(rx, self.dns1))
self.dns2.setValidator(QRegularExpressionValidator(rx, self.dns2))
self.on_dhcp_clicked(self.dhcp.isChecked())
这与宣传的一样有效,但用户没有得到任何反馈,因为尝试输入“错误”字符只会丢弃它们。
除了连接到QLineEdit.textChanged 信号并“手动”进行验证(即:不设置验证器,否则出现错误text 不会' t 变化,不会发出任何信号)。首选的反馈是更改行编辑的边框颜色。
这在某种程度上违背了验证器本身的目的。似乎我遗漏了一些东西,因为我看不到如何触发来自QValidator 的反馈。
处理这个问题的“标准方法”是什么?
【问题讨论】:
标签: python qt pyqt pyqt5 qvalidator