Как добавить подстановочный знак, заданный атрибутом, как Item of TraitsUI View в Python? - PullRequest
0 голосов
/ 18 февраля 2019

Я использую 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()
...