OlliTut/GUI/plotView.py

64 lines
1.8 KiB
Python

#!/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()