Я использую Traits и TraitsUI и В этой документации показано, как использовать подстановочные знаки в определениях атрибутов класса с использованием подчеркивания '__».Это здорово!
Поэтому я использую ' thing_ ', и теперь я могу определить любое количество атрибутов, которые начинаются с thing_ .
class manyThings( HasTraits ):
thing_ = Instance( thing )
Но затем я хочу создать представление, включающее некоторые обработчики и кнопки, и не могу найти способ добавить этот подстановочный атрибут в элементы представления.
traits_view = View(
Item(name = "thing_"), # This does not work
[...]
Любая помощь очень ценится.
Вот пример кода того, что я ищу, но не работает, так как View Item не распознает подчеркивание как подстановочный знак.
from traits.api import HasTraits, Instance, Str, Button
from traitsui.api import Handler, Item, UItem, View
# Only for example.This function could be any handler
class ClosingHandler(Handler):
def object_close_changed(self, info):
info.ui.dispose()
# This is some class definition
class thing( HasTraits ):
data = Str('')
# This should be a variable list of things
class manyThings( HasTraits ):
# This is the wildcard definition
thing_ = Instance( thing )
close = Button('Close')
# If I remove this 'traits_view' the "things" work except
# I get no button & no special view, handler...
traits_view = View(
Item(name = "thing_"), # This is not recognized...
# How to define a wildcarded Item??
UItem('close'),
handler=ClosingHandler(),
)
# Begin test
m = manyThings()
# Add some attributes using wildcard
setattr(m,"thing_one","First thing")
setattr(m,"thing_two","Second thing")
setattr(m,"thing_three","Third thing")
# As many as you want...
# Open UI
m.configure_traits()