1

在 TraitsUI 中,对于 Item(),是否可以设置一个包含 1 个以上项目的 visible_when() 参数列表?

例如,我想要这样的东西:

Group(
    Item(FirstItem, visible_when = 'foo == 1 and bar == 0'),
    Item(SecondItem, visible_when = 'foo == 0 and bar == 1),
    Item(ThirdItem, visible_when = 'foo == 0 and bar == 0)
)

这样只有 FirstItem、SecondItem 或 ThirdItem 会根据 foo 和 bar 中的值显示。

这可能吗?我已经进行了初步尝试,但没有运气(这可能是因为我的一个逻辑测试涉及一个字符串——我的问题是在 visible_when 字符串中进行字符串测试吗?这就是我的 visible_when 测试的样子(并且是'不工作):

visible_when = 'Initial_value == 1 && display_units == \'SI\'',

我已经尝试使用双引号“SI”中的 SI 和上面的转义单引号......都不适合我。我也尝试过使用 'and' 和 '&&' 也没有区别。

4

1 回答 1

3

是的,多个测试有效。要验证这一点,请运行稍作修改的https://raw.githubusercontent.com/enthought/traitsui/master/examples/demo/Dynamic_Forms/visible_when.py,例如,将两个 visible_when 条件更改为:

    visible_when = 'age < 18 and last_name=="Smith"',

    visible_when = 'age >= 18 or last_name!="Smith"',

我建议检查有关数据内容的假设。

(顺便说一句,字符串可以与双引号或转义单引号一起使用——为了便于阅读,我建议使用双引号)

于 2015-04-27T23:06:01.563 回答