Enthought Traits: списки вкладок групп и элементов диапазона не отображаются

Специалисты Enthought Traits помогают мне, я использую это впервые, и мое приложение сложное.

Справочная информация: я пытаюсь создать интерфейс, в котором мое основное окно SelectionWindow загружает несколько отдельных графиков данных. Каждый график данных отображается отдельно, и пользователь может использовать перетаскиваемую панель выбора (как в примере Range на demo.py), чтобы выбрать точки данных на каждом графике независимо друг от друга.

1) SelectionWindow создает объекты SelectionFrame в виде списка, каждый из которых создает свой диапазон Range на основе переданных данных. Я хочу, чтобы они были вставлены каждый SelectionFrame в другую вкладку. В SelectionFrame есть свойство Range для выбора пользователем некоторых данных и сгруппированное поле имени (сейчас, позже, я хочу график в этой группе).

2) Затем он делает Группу из этого списка SelectionFrames ->Group objects, чтобы я мог объединить все выбранные пользователем выборки во фреймах с вкладками.

3) Затем создается представление для всего окна SelectionWindow и его визуализируется.

Проблемы:

1) Я не могу получить SelectionFrames -> Group для вкладки. Я просто получаю вертикальный список селекторов Range, который сам по себе имеет вкладки, но есть только один из них.

2) Черты моего диапазона не отображаются. Я просто получаю текстовое поле с именем объекта и местоположением в памяти. * Выложу изображение, но это мой первый вопрос

Вот код, я удалил материал для загрузки данных, потому что я знаю, что он работает, но структура групп и прочего - вот основная проблема:

class SelectionWindow(HasTraits):

    def SelectionWindowFunctions():
        self.selection_frames = []
        for name, data from selections:
            self.selection_frames.append(SelectionFrame(name, data) )
        #setting traits data
        #add the selector traits to the window
        #make a list of Groups each of which presents a 
        #SelectionFrame object's data
        self.selection_frame_groups = []
        for i, frame in enumerate(self.selection_frames):
            self.frame_name = self.selection_frames[i].name
            self.selector = self.selection_frames[i].selector

            self.frame_group = Group(Item(name='frame_name',
                                        style='readonly'),
                                    Item(name="selector",
                                     style='simple'),

                                            )#group

            self.selection_frame_groups.append(self.frame_group)

        #Now make a group out of the selection_frame_groups list of frame groups
        #(items in a frame, e.g. selector bar etc).
        self.selections_group = Group(self.selection_frame_groups,
                                    label ="Selected Row Data",
                                    show_border = False,
                                    layout='tabbed',
                                    show_labels=True,
                                    )
        #Generate the view to be used
        self.frames_view = View(self.selections_group,
                            resizable = True,
                            buttons = ModalButtons,
                            title = "PhenOracle Selection Window",
                            )

class SelectionFrame(HasTraits):
    def __init__(self, in_name, in_data):
        #set the name 
        self.name = in_name
        #set the data attribute
        self.data = list(in_data)
        #create the Range trait selection slider
        self.selector = Range(value=float(self.data[0]), 
                            low=float(self.data[0]), high=float(self.data[-1]))

if __name__ == "__main__":
    w = SelectionWindow()
    w.SelectionWindowFunctions
    w.configure_traits(view=w.frames_view)

3) Если у кого-нибудь есть советы по размещению графика, который реагирует на ползунок, это было бы здорово. Должен ли я использовать Matplotlib или Chaco? Я хочу, чтобы была вертикальная линия, совпадающая с точкой, в которой находится селектор.

Спасибо, если это сработает, я выложу изображение готового продукта, потому что оно, вероятно, довольно уникально.

0 ответов

Другие вопросы по тегам