1
我寫了一個chaco繪圖類,繪製了一些數據並允許用戶與之交互。然後,我想創建一個TraitsUI GUI,該GUI有幾個不同的chaco plot實例,這樣用戶可以有幾個繪圖並獨立與它們交互。chaco - 製作幾個容器顯示單獨的地塊
但是,當我嘗試並實現這一點時,我似乎得到我的chaco圖的每個單獨實例都顯示了所有圖的所有數據。我在下面製作了一個非常簡單的GUI,重現了這個問題。
在下面的示例中,我希望每個選項卡都顯示帶有單線圖的容器。但是,每個容器似乎都繪製了任何容器中繪製的所有地塊。從這裏的文檔chaco container docs,我認爲我所做的應該工作。
我也試過使用ListEditor視圖,但是這有同樣的問題。
我對chaco容器有些誤解嗎?我怎樣才能讓每個容器實例獨立行動?任何幫助,將不勝感激。
謝謝!
import enthought.chaco.api as chaco
import enthought.traits.api as traits
import enthought.traits.ui.api as traitsui
from enthought.enable.api import ComponentEditor
import scipy
class BasicPlot(traits.HasTraits):
container = chaco.Plot(padding=(120,20,20,40), bgcolor="white",
use_backbuffer = True,
border_visible = True,
fill_padding = True)
traits_view = traitsui.View(traitsui.Item('container', editor = ComponentEditor(), show_label = False),
width = 500, height = 500,
resizable = True, title = "My line plot")
def __init__(self, n, *args, **kw):
super(BasicPlot, self).__init__(*args, **kw)
xs = scipy.linspace(0, 6.3, 1000)
ys = scipy.sin(n*xs)
plot = chaco.create_line_plot([xs,ys])
self.container.add(plot)
chaco.add_default_grids(plot)
chaco.add_default_axes(plot)
class tabbedPlots(traits.HasTraits):
bp1 = BasicPlot(1)
bp2 = BasicPlot(2)
bpGroup = traitsui.Group(traitsui.Item("bp1", editor = traitsui.InstanceEditor(), style="custom", show_label=False),
traitsui.Item("bp2", editor = traitsui.InstanceEditor(), style="custom", show_label=False), layout="tabbed")
traits_view = traitsui.View(bpGroup,title = "Log File Plots")
class tabbedPlotsList(traits.HasTraits):
bps = traits.List(BasicPlot)
bpGroup = traitsui.Group(
traitsui.Item('bps',style="custom",
editor=traitsui.ListEditor(use_notebook=True, deletable=True,export = 'DockWindowShell', page_name=".name")
,label="logFilePlots", show_label=False)
)
traits_view = traitsui.View(bpGroup,title = "Log File Plots")
def __init__(self, **traitsDict):
super(tabbedPlotsList, **traitsDict)
self.bps = [BasicPlot(n) for n in range(0,8)]
if __name__=="__main__":
gui = tabbedPlots()
gui.configure_traits()
gui2 = tabbedPlotsList()
gui2.configure_traits()