python - 从表单中检查数据的优雅方式
问题描述
我认为这是一个普遍的问题,但是,就我而言,我正在使用 PyQt5 和 Python 3。
我正在设置一个小软件,它正在使用测量设备记录数据。在测量之前,我必须输入一些数据,然后由软件验证其正确性,例如,是否填写了必填字段,或者输入值是否在允许范围内,或者我有一个起始值A
、一个终止值B
和步宽W
,所以我必须验证是否W<=B-A
我的问题是,检查表格最优雅的方式是什么?我可以简单地一一做:
class Form:
...
def check_form(self):
if self.fieldA.text() == "":
return False
if not self.check_range(self.fieldB.text()):
return False
# Check fields one by one...
...
def check_range(self, val):
if val > self.max_val:
return False
else:
return True
但实际上,这并不漂亮,它是重复代码,需要编写大量代码并且难以维护。所以我的问题是,有没有更好的方法?出现的一个想法是定义一个对象(可能是一个字典),它包含所有相关的表单信息,如标签、默认值、条件等......我可以将该表单放入一个 json 文件中,然后加载它甚至在我需要时生成表单。也许可能会出现一些障碍,特别是我必须考虑如何处理下拉列表,但我认为这至少是一种方法。
反正。在我之前,100% 的其他人都在努力解决这个问题,所以也许有一种标准的方法可以优雅地解决这个问题。
解决方案
一个好的 UX 实践是告知用户软件的期望,而不是让他们猜测,可能输入错误的值,然后用他们不理解的神秘错误消息通知/误导!
在您在此处描述的情况下,请在输入标签旁边清楚地标明星号 (*) 以表明它是必填字段。可能软件也应该提供合理的默认值。同样使用正确的小部件来解决您在此处描述的特定问题将是一个好主意。因此,我没有使用三个将数字输入作为文本字段的 QLineEdit 字段,而是使用旨在请求良好约束范围的值的 QSpinBox 或 QDoubleSpinBox 。
推荐阅读
- javascript - addClass() 仅指向子元素(而不是嵌套元素)
- c - realloc 在第二次调用时失败
- python - 弹出索引超出范围python
- php - 如何从 MySQL 中获取值以选择/选项标签
- pytorch - 损失振荡而不是减少 seq2seq gru pytorch
- c# - 诊断工具意外失败
- c++ - 你能告诉我函数的时间复杂度(Big-O)是多少吗?
- python - 使用 selenium (Python) 实现 Instagram 自动化 - 关注和取消关注按钮
- cucumber - 无法在 serenity bdd 中并行执行测试用例
- flutter - 如何在 Flutter 的 material_tag_editor 中使用 'Enter' 作为分隔符