diff --git a/skimage/viewer/plugins/plotplugin.py b/skimage/viewer/plugins/plotplugin.py index 0c298381..fa06088d 100644 --- a/skimage/viewer/plugins/plotplugin.py +++ b/skimage/viewer/plugins/plotplugin.py @@ -2,12 +2,12 @@ import numpy as np from PyQt4 import QtGui import matplotlib.pyplot as plt -from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg +from ..utils import MatplotlibCanvas from .base import Plugin -class PlotCanvas(FigureCanvasQTAgg): +class PlotCanvas(MatplotlibCanvas): """Canvas for displaying images. This canvas derives from Matplotlib, and has attributes `fig` and `ax`, @@ -15,17 +15,9 @@ class PlotCanvas(FigureCanvasQTAgg): """ def __init__(self, parent, height, width, **kwargs): self.fig, self.ax = plt.subplots(figsize=(height, width), **kwargs) - - FigureCanvasQTAgg.__init__(self, self.fig) - FigureCanvasQTAgg.setSizePolicy(self, - QtGui.QSizePolicy.Expanding, - QtGui.QSizePolicy.Expanding) - FigureCanvasQTAgg.updateGeometry(self) - # Note: `setParent` must be called after `FigureCanvasQTAgg.__init__`. - self.setParent(parent) + super(PlotCanvas, self).__init__(parent, self.fig, **kwargs) self.setMinimumHeight(150) - class PlotPlugin(Plugin): """Plugin for ImageViewer that contains a plot canvas. diff --git a/skimage/viewer/utils/core.py b/skimage/viewer/utils/core.py index cdcc10bf..81d66183 100644 --- a/skimage/viewer/utils/core.py +++ b/skimage/viewer/utils/core.py @@ -1,9 +1,11 @@ import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap +from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg +from PyQt4 import QtGui -__all__ = ['figimage', 'LinearColormap', 'ClearColormap'] +__all__ = ['figimage', 'LinearColormap', 'ClearColormap', 'MatplotlibCanvas'] def figimage(image, scale=1, dpi=None, **kwargs): @@ -72,3 +74,16 @@ class ClearColormap(LinearColormap): 'red': [(0.0, r), (1.0, r)], 'alpha': [(0.0, 0.0), (1.0, max_alpha)]} LinearColormap.__init__(self, name, cg_speq) + + +class MatplotlibCanvas(FigureCanvasQTAgg): + """Canvas for displaying images.""" + def __init__(self, parent, figure, **kwargs): + self.fig = figure + FigureCanvasQTAgg.__init__(self, self.fig) + FigureCanvasQTAgg.setSizePolicy(self, + QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Expanding) + FigureCanvasQTAgg.updateGeometry(self) + # Note: `setParent` must be called after `FigureCanvasQTAgg.__init__`. + self.setParent(parent) diff --git a/skimage/viewer/viewers/core.py b/skimage/viewer/viewers/core.py index 1046ca7c..dc38b422 100644 --- a/skimage/viewer/viewers/core.py +++ b/skimage/viewer/viewers/core.py @@ -4,26 +4,18 @@ ImageViewer class for viewing and interacting with images. import sys from PyQt4 import QtGui, QtCore -from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg -from skimage.viewer.utils import figimage +from ..utils import figimage, MatplotlibCanvas qApp = None -class ImageCanvas(FigureCanvasQTAgg): +class ImageCanvas(MatplotlibCanvas): """Canvas for displaying images.""" def __init__(self, parent, image, **kwargs): self.fig, self.ax = figimage(image, **kwargs) - - FigureCanvasQTAgg.__init__(self, self.fig) - FigureCanvasQTAgg.setSizePolicy(self, - QtGui.QSizePolicy.Expanding, - QtGui.QSizePolicy.Expanding) - FigureCanvasQTAgg.updateGeometry(self) - # Note: `setParent` must be called after `FigureCanvasQTAgg.__init__`. - self.setParent(parent) + super(ImageCanvas, self).__init__(parent, self.fig, **kwargs) class ImageViewer(QtGui.QMainWindow):