1

我正在尝试构建具有多窗格结构的多窗格 wxAUI 应用程序。

我有两类由 AuiManager (_mgr) 控制的对象,它们是:1) wx.Grid.CSheet 对象插入窗格内的 AuiNotebook 2) Matplotlib.figure 对象也封装到同一 AuiManager 内的另一个 AuiNotebook 中。

这是定义相应对象的两个类。

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 数据。我想将网格中的 X、Y 数据与相应的图形同步,以便在更改这些数据时,图形也会更新。

在创建时,我可以用我的数据内容填充网格和图形,但是在更改事件(例如将新数据粘贴到网格中时)后,我无法更新图形内容。我在更新 figure.canvas.draw() 和 _mgr.Update() 之后尝试过使用,但尽管我没有收到任何错误,但它们似乎不起作用。

4

0 回答 0