2015-04-27 2 views
1

В TraitsUI для элемента() можно настроить список параметров visible_when() с более чем 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 и бар.

Возможно ли это? Я сделал первоначальную попытку, но мне не повезло (может быть, потому, что один из моих логических тестов включает в себя строку - это моя проблема с строковым тестом внутри строки visible_when? Это то, что мой тест visible_when выглядит (и isn 'т не работает):

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

Я попытался с СИ в двойных кавычках „СИ“ и с уцелевшими одинарными кавычками, как выше ... ни работал для меня Я также попытался использовать. и «и» & & 'без разницы либо.

ответ

3

Да, несколько тестов работы. Чтобы проверить это, запустить слегка модифицированный https://raw.githubusercontent.com/enthought/traitsui/master/examples/demo/Dynamic_Forms/visible_when.py, где вы меняете, например, два visib le_when условия для них:

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

и

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

Я предлагаю проверить предположения о содержании данных.

(BTW, строки могут использовать либо с двуспальной или сбежавших одинарные кавычки - я предлагаю двойные кавычки для читаемости)

+0

Я думал, что так оно и будет работать. Я посмотрел на ваш пример модификации, и он тоже работал точно так, как должен. Поэтому я более внимательно посмотрел на свой код ... один из тестов был против значения enum, и у меня есть список, содержащий все возможные элементы enum, и я тестировал этот список, а не значение enum! Спасибо, что разбудил меня до моей ошибки :) – Steve76063

Смежные вопросы