#!/usr/bin/env python3 # -*- coding: UTF-8 -*- # # generated by wxGlade 1.0.2 on Sun Jul 4 21:23:20 2021 # import wx # begin wxGlade: dependencies # end wxGlade # begin wxGlade: extracode # end wxGlade import matplotlib.cm as cm import matplotlib.cbook as cbook from matplotlib.backends.backend_wxagg import ( FigureCanvasWxAgg as FigureCanvas, NavigationToolbar2WxAgg as NavigationToolbar, ) from matplotlib.figure import Figure import logging LOGGER = logging.getLogger("mylogger") class PlotPanel(wx.Panel): def __init__(self, parent, pd, plotLambda, updateLambda): super().__init__(parent, -1) self.plotLambda = plotLambda self.updateLambda = updateLambda self.pd = pd self.fig = Figure((15, 10), 75) self.canvas = FigureCanvas(self, -1, self.fig) self.toolbar = NavigationToolbar(self.canvas) # matplotlib toolbar self.toolbar.Realize() # Now put all into a sizer sizer = wx.BoxSizer(wx.VERTICAL) # This way of adding to sizer allows resizing sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW) # Best to allow the toolbar to resize! sizer.Add(self.toolbar, 0, wx.GROW) self.SetSizer(sizer) self.Fit() self.Bind(wx.EVT_PAINT, self.on_paint, self) self.ax = self.fig.add_subplot() self.fig.legend() (self.im,) = self.plotLambda(self.ax,self.pd.data) self.toolbar.update() # Not sure why this is needed - ADS def get_toolbar(self): # You will need to override GetToolBar if you are using an # unmanaged toolbar in your frame return self.toolbar def on_paint(self, event): dat = self.pd.data self.updateLambda(self.im, dat) self.ax.relim() self.ax.autoscale_view() self.canvas.draw() event.Skip()