Enthought Traits の専門家が私を助けてくれます。これは初めての使用であり、私のアプリケーションは複雑です。
背景: メインの SelectionWindow がいくつかの個別のデータ グラフをロードするインターフェイスを作成しようとしています。データの各グラフは個別に表示され、ユーザーはドラッグ可能な選択バー (demo.py の Range の例のように) を使用して、各グラフのデータのポイントを互いに独立して選択できます。
1) SelectionWindow は SelectionFrame オブジェクトをリストに構築し、それぞれが渡されたデータに基づいて Range トレイトを作成します。これらを別のタブの各 SelectionFrame にタブ付けしたいと思います。SelectionFrame には、ユーザーがいくつかのデータとグループ化された名前フィールドを選択するための Range 特性があります (今のところ、後でこのグループにグラフが必要です)。
2) 次に、この SelectionFrames-->Group オブジェクトのリストからグループを作成し、ユーザーがタブ付きフレーム全体で行ったすべての選択を統合できるようにします。
3) 次に、SelectionWindow 全体のビューが生成され、レンダリングされます。
問題:
1) SelectionFrames-->Group をタブ化することができません。それ自体がタブ化されている範囲セレクターの垂直リストを取得するだけですが、これらは1つしかありません。
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 を使用する必要がありますか? セレクターがオンになっているポイントと一致する垂直線が必要です。
それが機能する場合はありがとうございます.おそらくかなりユニークなので、完成品の画像をアップします.