0

2 つの IntFields を持つフォームがあるとします。IntField A の入力に応じて IntField B を検証するにはどうすればよいですか? たとえば、A == 1 の場合、B は 0 ~ 30 の範囲内でのみ指定できます。A == 2 の場合、B は 0 ~ 50 の範囲内でのみ指定できます。それ以外の場合、B は他の任意の数値にすることができます

私がグーグルできるすべてから、別のフィールドにリンクする機能なしでのみフィールドを検証する IntValidator しか見つけることができません。IntValidator の最小/最大値を更新する方法を示す例や、別のフィールドの値の変更に応じて検証が変更されるように別のフィールドの値を取得できるカスタム Validator はありません...

enamldef IntFieldsWindow( Window ):

    Container:
        Form:
            padding=0
            Label:
                text = 'Field A'
            IntField: fld_a:
                value = 0
            Label:
                text = 'Field B'
            IntField: fld_b:
                value = 0

いくつかのテストの後、fld_a をカスタム バリデーターに渡し、validate 関数で fld_a.value を取得し、最後にカスタム バリデーターを fld_b に設定することが実際に可能です。ただし、そのような検証を行う方法であるかどうかはわかりません。

4

1 に答える 1