マルチペイン構造のマルチペイン wxAUI アプリケーションを構築しようとしています。
AuiManager (_mgr) によって制御されるオブジェクトの 2 つのクラスがあります。1) ペイン内の AuiNotebook に挿入された wx.Grid.CSheet オブジェクト 2) 同じ AuiManager 内の他の AuiNotebook にカプセル化された Matplotlib.figure オブジェクト。
対応するオブジェクトを定義する 2 つのクラスを次に示します。
class MySheet(sheet.CSheet):
""" A Copy&Paste enabled grid class"""
def __init__(self, parent,NRows,NCols):
sheet.CSheet.__init__(self, parent)
wx.EVT_KEY_DOWN(self, self.OnKey)
self.SetLabelBackgroundColour('#DBD4D4')
self.SetNumberRows(NRows)
self.SetNumberCols(NCols)
self.NRows = NRows
self.NCols = NCols
def selection(self):
MORE CODE HERE
def OnKey(self, event):
MORE CODE HERE
def copy(self):
MORE CODE HERE
def paste(self):
MORE CODE HERE
def delete(self):
MORE CODE HERE
class Plot(wx.Panel):
def __init__(self, parent, id = -1, dpi = None, **kwargs):
wx.Panel.__init__(self, parent, id=id, **kwargs)
self.figure = mpl.figure.Figure(dpi=dpi, figsize=(2,2))
self.canvas = Canvas(self, -1, self.figure)
self.toolbar = Toolbar(self.canvas)
self.toolbar.Realize()
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.canvas,1,wx.EXPAND)
sizer.Add(self.toolbar, 0 , wx.LEFT | wx.EXPAND)
self.SetSizer(sizer)
class PlotNotebook(wx.Panel):
def __init__(self, parent, id = -1):
wx.Panel.__init__(self, parent, id=id)
self.nb = wx.aui.AuiNotebook(self)
sizer = wx.BoxSizer()
sizer.Add(self.nb, 1, wx.EXPAND)
self.SetSizer(sizer)
def add(self,name="plot"):
page = Plot(self.nb)
self.nb.AddPage(page,name)
return page.figure
デフォルトとして、それぞれ X データと Y データに対応する 2 つの列を持つ 2 つの図と 2 つのグリッドを設定しました。グリッド内の X、Y データを対応する図と同期して、これらが変更されたときに図も更新されるようにしたいと思います。
作成時にグリッドと Figure をデータ コンテンツで埋めることはできますが、新しいデータがグリッドに貼り付けられたときなどの変更イベントの後に Figure コンテンツを更新することはできません。更新後に figure.canvas.draw() と _mgr.Update() を使用しようとしましたが、エラーが発生していないにもかかわらず機能しないようです。