Merge pull request #300 from tonysyu/viewer-qapp-fix

BUG: Viewer-plugin QApplication fix.
This commit is contained in:
Stefan van der Walt
2012-09-04 23:36:39 -07:00
3 changed files with 26 additions and 14 deletions
+2 -1
View File
@@ -14,7 +14,7 @@ try:
except ImportError:
print("Could not import matplotlib -- skimage.viewer not available.")
from ..utils import RequiredAttr
from ..utils import RequiredAttr, init_qtapp
class Plugin(QDialog):
@@ -82,6 +82,7 @@ class Plugin(QDialog):
draws_on_image = False
def __init__(self, image_filter=None, height=0, width=400, useblit=None):
init_qtapp()
super(Plugin, self).__init__()
self.image_viewer = None
+19 -2
View File
@@ -17,8 +17,25 @@ except ImportError:
print("Could not import PyQt4 -- skimage.viewer not available.")
__all__ = ['figimage', 'LinearColormap', 'ClearColormap', 'MatplotlibCanvas',
'RequiredAttr']
__all__ = ['init_qtapp', 'start_qtapp', 'RequiredAttr', 'figimage',
'LinearColormap', 'ClearColormap', 'MatplotlibCanvas']
QApp = None
def init_qtapp():
"""Initialize QAppliction.
The QApplication needs to be initialized before creating any QWidgets
"""
global QApp
if QApp is None:
QApp = QtGui.QApplication([])
def start_qtapp():
"""Start Qt mainloop"""
QApp.exec_()
class RequiredAttr(object):
+5 -11
View File
@@ -1,8 +1,6 @@
"""
ImageViewer class for viewing and interacting with images.
"""
import sys
try:
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QMainWindow
@@ -11,20 +9,18 @@ except ImportError:
print("Could not import PyQt4 -- skimage.viewer not available.")
from skimage.util.dtype import dtype_range
from ..utils import figimage, MatplotlibCanvas
from .. import utils
from ..widgets import Slider
__all__ = ['ImageViewer', 'CollectionViewer']
qApp = None
class ImageCanvas(MatplotlibCanvas):
class ImageCanvas(utils.MatplotlibCanvas):
"""Canvas for displaying images."""
def __init__(self, parent, image, **kwargs):
self.fig, self.ax = figimage(image, **kwargs)
self.fig, self.ax = utils.figimage(image, **kwargs)
super(ImageCanvas, self).__init__(parent, self.fig, **kwargs)
@@ -60,9 +56,7 @@ class ImageViewer(QMainWindow):
"""
def __init__(self, image):
# Start main loop
global qApp
if qApp is None:
qApp = QtGui.QApplication(sys.argv)
utils.init_qtapp()
super(ImageViewer, self).__init__()
#TODO: Add ImageViewer to skimage.io window manager
@@ -136,7 +130,7 @@ class ImageViewer(QMainWindow):
for p in self.plugins:
p.show()
super(ImageViewer, self).show()
qApp.exec_()
utils.start_qtapp()
def redraw(self):
self.canvas.draw_idle()