COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
matplotlibwidget.py
1 # -*- coding: utf-8 -*-
2 """
3 Created on Tue Jun 24 00:27:01 2014
4 
5 @author: fvidal
6 """
7 """
8 from PyQt4 import QtGui
9 from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
10 
11 from matplotlib.figure import Figure
12 
13 class MplCanvas(FigureCanvas):
14 
15  def __init__(self):
16  self.fig = Figure(facecolor='white')
17  self.axes = self.fig.add_subplot(111)
18  # We want the axes cleared every time plot() is called
19  self.axes.hold(False)
20  FigureCanvas.__init__(self, self.fig)
21  FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)
22  FigureCanvas.updateGeometry(self)
23 
24 
25 class MatplotlibWidget(QtGui.QWidget):
26 
27  def __init__(self, parent = None):
28  QtGui.QWidget.__init__(self, parent)
29  self.canvas = MplCanvas()
30  self.vbl = QtGui.QVBoxLayout()
31  self.vbl.addWidget(self.canvas)
32  self.setLayout(self.vbl)
33 """
34 
35 try:
36  from PyQt5 import QtWidgets
37 except ModuleNotFoundError as e:
38  try:
39  from PySide2 import QtWidgets
40  except ModuleNotFoundError as e:
41  raise ModuleNotFoundError("No module named 'PyQt5' or PySide2', please install one of them\nException raised: "+e.msg)
42 
43 from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
44 from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as Navigationtoolbar
45 from matplotlib.figure import Figure
46 from matplotlib import gridspec
47 
48 # import matplotlib
49 # matplotlib.use('Qt5Agg')
50 
51 # matplotlib.rcParams['backend.qt4']='PySide'
52 # matplotlib.style.use('ggplot')
53 # matplotlib.style.use('seaborn-muted')
54 
55 
56 #Embeddable matplotlib figure/canvas
57 class MplCanvas(FigureCanvas):
58 
59  def __init__(self):
60  self.figfig = Figure(frameon=True)
61  self.gs1gs1 = gridspec.GridSpec(1, 1)
62  self.axesaxes = self.figfig.add_subplot(self.gs1gs1[0], aspect="auto")
63 
64  FigureCanvas.__init__(self, self.figfig)
65  FigureCanvas.setSizePolicy(self, QtWidgets.QSizePolicy.Expanding,
66  QtWidgets.QSizePolicy.Expanding)
67  FigureCanvas.updateGeometry(self)
68 
69 
70 #creates embeddable matplotlib figure/canvas with toolbar
71 class MatplotlibWidget(QtWidgets.QWidget):
72 
73  def __init__(self, parent=None):
74  QtWidgets.QWidget.__init__(self, parent)
75  self.create_framentoolbarcreate_framentoolbar()
76 
78  self.frameframe = QtWidgets.QWidget()
79  self.canvascanvas = MplCanvas()
80  self.canvascanvas.setParent(self.frameframe)
81  self.mpltoolbarmpltoolbar = Navigationtoolbar(self.canvascanvas, self.frameframe)
82  self.vblvbl = QtWidgets.QVBoxLayout()
83  self.vblvbl.addWidget(self.canvascanvas)
84  self.vblvbl.addWidget(self.mpltoolbarmpltoolbar)
85  self.setLayout(self.vblvbl)