簡體   English   中英

TraitsUI CheckListEditor更改值的大小寫

[英]TraitsUI CheckListEditor changing the case of values

我正在使用CheckListEditor讓用戶選擇可用選項的子集。 將樣式設置為“自定義”后,它會顯示一個帶有標簽的復選框列表。 這就是我想要的。 但是,一個問題是,在某些情況下,文本內容會隨着案例的變化而顯示 - 我很困惑為什么會發生這種情況。

例如,如果文本是".state.Last" ,則它顯示為".state.last"

任何人都知道為什么會發生這種情況,以及是否有解決此問題的方法。

謝謝。

默認情況下,編輯器調用字符串方法來capitalize文本。 我不知道為什么; 也許作者認為這有助於在UI中強制執行一致的風格。

您可以覆蓋與此行為format_func中的參數CheckListEditor 這是一個例子。 (我還使用了Itemlabel參數來覆蓋編輯器標簽的大小寫。)

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])))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM