1

CheckListEditorユーザーが利用可能なオプションのサブセットを選択できるようにするために使用しています。スタイルを「カスタム」に設定すると、横にラベルが付いたチェックリスト ボックスのリストが表示されます。これが私が欲しかったものです。しかし、1 つの問題は、テキスト コンテンツが場合によっては大文字と小文字が変更されて表示されることです。なぜこれが起こるのか混乱しています。

たとえば、テキストが の場合、".state.Last"として表示され".state.last"ます。

この問題が発生する理由と、この問題の回避策があるかどうかは誰でも知っています。

ありがとう。

4

1 に答える 1

4

デフォルトでは、エディターはcapitalizeテキストに対して string メソッドを呼び出します。どうしてか分かりません; おそらく作成者は、これが UI で一貫したスタイルを強制するのに役立つと考えました。

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は UI に表示される文字列で、 はobjリストに追加されるオブジェクトです。このフォームを使用すると、ラベルは UI で変更されません。例えば、

    traits_view = View(Item('stuff', style='custom', label='stuff',
        editor=CheckListEditor(values=[('.state.First',)*2,
                                       ('.state.Last',)*2,
                                       ('.state.Any',)*2])))
于 2014-05-21T12:35:15.570 に答える