TraitsUI CheckListEditor меняет регистр значений

Я использую CheckListEditor чтобы позволить пользователю выбрать подмножество доступных опций. С установленным стилем 'custom', он отображает список контрольных списков с метками рядом. Это то, что я хотел. Но одна проблема заключается в том, что текстовое содержимое отображается с измененным регистром в некоторых случаях - я не понимаю, почему это происходит.

Например, если текст ".state.Last"отображается как ".state.last",

Кто-нибудь знает, почему это происходит и есть ли решение этой проблемы.

Благодарю.

1 ответ

Решение

По умолчанию редактор вызывает строковый метод capitalize по тексту. Я не знаю почему; возможно, автор подумал, что это поможет обеспечить согласованный стиль в пользовательском интерфейсе.

Вы можете изменить это поведение с помощью format_func аргумент CheckListEditor, Вот пример. (Я также использовал label аргумент Item переопределить заглавные буквы метки редактора.)

from traits.api import HasTraits, List, on_trait_change
from traitsui.api import Item, View, CheckListEditor


class Foo(HasTraits):
    stuff = List()

    traits_view = View(Item('stuff', style='custom', label='stuff',
        editor=CheckListEditor(values=['.state.First', '.state.Last', '.state.Any'],
                               format_func=lambda x: x)))

    @on_trait_change('stuff[]')
    def show_stuff(self):
        print "stuff =", self.stuff


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

Кроме того, вы можете дать values как список кортежей. Каждый кортеж имеет форму (obj, label), где label это строка, которая отображается в пользовательском интерфейсе и obj это объект, добавленный в список. Когда эта форма используется, метка остается неизменной в пользовательском интерфейсе. Например,

    traits_view = View(Item('stuff', style='custom', label='stuff',
        editor=CheckListEditor(values=[('.state.First',)*2,
                                       ('.state.Last',)*2,
                                       ('.state.Any',)*2])))
Другие вопросы по тегам