首页 > 解决方案 > 从表单中检查数据的优雅方式

问题描述

我认为这是一个普遍的问题,但是,就我而言,我正在使用 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% 的其他人都在努力解决这个问题,所以也许有一种标准的方法可以优雅地解决这个问题。

标签: pythonpyqt

解决方案


一个好的 UX 实践是告知用户软件的期望,而不是让他们猜测,可能输入错误的值,然后用他们不理解的神秘错误消息通知/误导!

在您在此处描述的情况下,请在输入标签旁边清楚地标明星号 (*) 以表明它是必填字段。可能软件也应该提供合理的默认值。同样使用正确的小部件来解决您在此处描述的特定问题将是一个好主意。因此,我没有使用三个将数字输入作为文本字段的 QLineEdit 字段,而是使用旨在请求良好约束范围的值的 QSpinBox 或 QDoubleSpinBox 。


推荐阅读