使用 UI 更新动态添加特征

Dynamically adding a trait with UI update

是否有可能在 configure_traits() window 中有一个像 'Add integer' 这样的按钮,单击该按钮将添加一个新的整数字段,准备在同一个 window 中编辑?

正如@jonathan-march 指出的那样,如果您只需要固定数量的字段来隐藏它们,直到您单击按钮,这可能是最安全的,但是如果您需要一个不确定的数字,则制作起来相当简单ListInt 秒,然后在您每次单击该按钮时追加到该列表。当您想收听这些列表元素的索引时,麻烦将出在簿记上。我在下面举了一个小例子来说明你如何做到这一点:

from traits.api import Button, HasStrictTraits, Int, List
from traitsui.api import Group, Item, ListEditor, UItem, View


class DynamicListOfInts(HasStrictTraits):

    integer_list = List(Int)
    add_int = Button('Add integer')

    def default_traits_view(self):
        view = View(
            Group(
                UItem('add_int'),
                Item('integer_list', editor=ListEditor()),
            ),
            width=300,
            height=500,
        )
        return view

    def _add_int_changed(self):
        self.integer_list.append(0)


if __name__ == '__main__':
    list_of_ints = DynamicListOfInts()
    list_of_ints.configure_traits()