Enthought Traits 专家帮助我,这是我第一次使用,我的应用程序很复杂。
背景:我正在尝试创建一个界面,让我的主 SelectionWindow 加载一些单独的数据图。每个数据图表都单独显示,用户可以使用可拖动的选择栏(如 demo.py 上的 Range 示例)来选择每个图表上的数据点,彼此独立。
1) SelectionWindow 将 SelectionFrame 对象构造成一个列表,每个对象都根据传入的数据创建其 Range 特征。我希望这些在另一个选项卡中的每个 SelectionFrame 都被标记。SelectionFrame 具有 Range 特征,供用户选择一些数据和分组的名称字段(现在,稍后我想要该组中的图表)。
2) 然后它从这个 SelectionFrames-->Group 对象列表中创建一个 Group,这样我就可以合并用户在选项卡框架中所做的所有选择。
3)然后为整个SelectionWindow生成一个视图并渲染它。
问题:
1) 我无法让 SelectionFrames-->Group 被标记。我只是得到一个范围选择器的垂直列表,它本身是标签的,但只有其中一个。
2) 我的 Range 特征没有呈现。我只是得到一个带有对象名称和内存位置的文本字段。*会发布图片,但这是我的第一个问题
这是代码,我已经剥离了数据加载的东西,因为我知道这是可行的,但组和东西的结构是这里的主要关注点:
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?我希望有一条垂直线与选择器所在的点对齐。
谢谢你,如果它有效,我会放一张成品的图片,因为它可能非常独特。