PyQT5中如何检测3个QLineEdit的输入值是否为空?
问题根因
- 你定义的
check是固定长度为3的列表,只要完成赋值操作就永远不会等于None,因此if check == None的判断永远为假,错误提示分支永远不会触发 - QLineEdit组件未输入内容时,
text()方法返回的是空字符串''而非None,你需要校验的是列表内的每个元素是否为非空值,而非校验列表本身是否存在
修复方案
场景1:三个输入框均为必填项,任意一个为空就触发错误
你可以用Python内置的all()方法校验列表内所有元素是否均为真值(空字符串''在布尔判断中为假),代码修改如下:
self.name_edit = self.nameEdit.text() self.jobTitle_edit = self.jobTitleEdit.text() self.mob_edit = self.mobEdit.text() self.businessUnit = str(self.BusinessUnit.currentText()) # 可添加strip()过滤全空格的无效输入,不需要的话去掉.strip()即可 check = [self.name_edit.strip(), self.jobTitle_edit.strip(), self.mob_edit.strip()] if not all(check): data = "FailedNoInfo" self.windows2 = notifyWindow(data) print(self.nameEdit.text()) print(self.mobEdit.text()) else: # 注意:原代码else分支的data未定义,需根据你的业务逻辑补充赋值 data = xxx ProcessData(data) print(self.nameEdit.text()) print(self.mobEdit.text()) print(self.jobTitleEdit.text())
场景2:仅当三个输入框全部为空时才触发错误
把上述代码的判断条件替换为if not any(check):即可。
注意事项
原代码中else分支调用ProcessData(data)时,data变量仅在错误分支做了赋值,未在else分支定义直接调用会触发NameError,需要根据你的业务逻辑补充data的赋值逻辑。
内容的提问来源于stack exchange,提问作者Blokhunt
相关产品推荐
相关产品推荐

