使用 UI 更新动态添加特征
Dynamically adding a trait with UI update
是否有可能在 configure_traits()
window 中有一个像 'Add integer' 这样的按钮,单击该按钮将添加一个新的整数字段,准备在同一个 window 中编辑?
正如@jonathan-march 指出的那样,如果您只需要固定数量的字段来隐藏它们,直到您单击按钮,这可能是最安全的,但是如果您需要一个不确定的数字,则制作起来相当简单List
共 Int
秒,然后在您每次单击该按钮时追加到该列表。当您想收听这些列表元素的索引时,麻烦将出在簿记上。我在下面举了一个小例子来说明你如何做到这一点:
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()
是否有可能在 configure_traits()
window 中有一个像 'Add integer' 这样的按钮,单击该按钮将添加一个新的整数字段,准备在同一个 window 中编辑?
正如@jonathan-march 指出的那样,如果您只需要固定数量的字段来隐藏它们,直到您单击按钮,这可能是最安全的,但是如果您需要一个不确定的数字,则制作起来相当简单List
共 Int
秒,然后在您每次单击该按钮时追加到该列表。当您想收听这些列表元素的索引时,麻烦将出在簿记上。我在下面举了一个小例子来说明你如何做到这一点:
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()