优雅的方式来检查表单中的数据

时间:2018-10-25 21:02:28

标签: python pyqt

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

1 个答案:

答案 0 :(得分:-1)

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

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