2015-06-29 1 views
1

Я использую виды в Enthought Traitsui. В представлении я использую Item('strings', enabled_when='len(x)>20'), где 'strings' - это список строк, а len(x)>20 никогда не будет истинным. Если в списке больше трех строк, я не вижу их всех. Я хотел бы иметь возможность прокручивать все строки, но в то же время не разрешать редактировать строки. Кто-нибудь знает, могу ли я иметь только что прочитанный и прокручиваемый элемент, а если нет, то какие альтернативы? Спасибо.Как я могу сделать View Item readonly И прокручиваемым в Enthought Traitsui?

+0

Почему это проблематично? 'ListEditor' и' ListStrEditor' имеют стили только для чтения. что ты уже испробовал? – aestrivex

+0

Зачем вам нужно 'enabled_when = 'len (x)> 20'', если' len (x)> 20' никогда не является истинным? Вы используете это как способ получить редактор readonly? – aestrivex

+0

@aestrivex Спасибо за ваши комментарии. Я пробовал несколько вещей, но не ListEditor. Я использовал «enabled_when = 'len (x)> 20'", чтобы получить редактор readonly. С ListEditor я могу получить стиль readonly, и я могу прокручивать список. – Antique

ответ

0

Я думаю, что вы ищете способ настройки редактора. Вот общая идея в минимальном примере:

from traits.api import HasTraits, List 
from traitsui.api import View, ListEditor, Group, Item 


class Foo(HasTraits): 
    my_list = List() 

    def _my_list_default(self): 
     return [str(n) for n in range(6)] 

    traits_view = View(
     Item('my_list', 
      style='custom', 
      editor=ListEditor(
       style='text', 
       ), 
     ), 
     height=100, 
    ) 

if __name__ == '__main__': 
    f = Foo() 
    f.configure_traits() 

sample UI

Вы можете посмотреть в документации TraitsUI найти много способов, чтобы настроить вид с разными заводами редактора. Например, вы можете изменить style='readonly', чтобы предотвратить редактирование.