Update viewer for PyQt5 compatibility

Conflicts:
	skimage/viewer/tests/test_plugins.py
	skimage/viewer/tests/test_tools.py
This commit is contained in:
Steven Silvester
2014-12-27 10:52:27 -06:00
parent 6f1eb316d2
commit 65c1d4eec6
24 changed files with 161 additions and 211 deletions
+7 -1
View File
@@ -60,7 +60,13 @@ import os.path as _osp
import imp as _imp
import functools as _functools
import warnings as _warnings
from skimage._shared.utils import deprecated as _deprecated
import matplotlib as _mpl
try:
_imp.find_module('PyQt5')
_mpl.use('Qt5Agg')
except ImportError:
_mpl.use('Qt4Agg')
pkg_dir = _osp.abspath(_osp.dirname(__file__))
data_dir = _osp.join(pkg_dir, 'data')
+5 -9
View File
@@ -1,11 +1,7 @@
from warnings import warn
from skimage._shared.version_requirements import is_installed
try:
from .qt import QtGui as _QtGui
except ImportError as e:
raise
raise ImportError('Viewer requires Qt')
from .viewers import ImageViewer, CollectionViewer
from .qt import qt_api
viewer_available = not qt_api is None and is_installed('matplotlib')
if not viewer_available:
warn('Viewer requires matplotlib and Qt')
del qt_api, is_installed, warn
+1 -4
View File
@@ -1,8 +1,5 @@
import numpy as np
try:
from matplotlib import lines
except ImportError:
pass
from matplotlib import lines
__all__ = ['CanvasToolBase', 'ToolHandles']
+1 -4
View File
@@ -1,9 +1,6 @@
import numpy as np
try:
from matplotlib import lines
except ImportError:
pass
from matplotlib import lines
from skimage.viewer.canvastools.base import CanvasToolBase, ToolHandles
+4 -7
View File
@@ -1,11 +1,8 @@
import numpy as np
try:
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
LABELS_CMAP = mcolors.ListedColormap(['white', 'red', 'dodgerblue', 'gold',
'greenyellow', 'blueviolet'])
except ImportError:
pass
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
LABELS_CMAP = mcolors.ListedColormap(['white', 'red', 'dodgerblue', 'gold',
'greenyellow', 'blueviolet'])
from skimage.viewer.canvastools.base import CanvasToolBase
+1 -5
View File
@@ -1,8 +1,4 @@
try:
from matplotlib.widgets import RectangleSelector
except ImportError:
RectangleSelector = object
from matplotlib.widgets import RectangleSelector
from skimage.viewer.canvastools.base import CanvasToolBase
from skimage.viewer.canvastools.base import ToolHandles
+4 -12
View File
@@ -4,19 +4,11 @@ Base class for Plugins that interact with ImageViewer.
from warnings import warn
import numpy as np
from ..qt import QtGui, qt_api
from ..qt.QtCore import Qt, Signal
from ..qt import QtWidgets, QtCore, Signal
from ..utils import RequiredAttr, init_qtapp
from skimage._shared.testing import doctest_skip_parser
if qt_api is not None:
has_qt = True
else:
has_qt = False
class Plugin(QtGui.QDialog):
class Plugin(QtWidgets.QDialog):
"""Base class for plugins that interact with an ImageViewer.
A plugin connects an image filter (or another function) to an image viewer.
@@ -101,7 +93,7 @@ class Plugin(QtGui.QDialog):
"then the `image_filter` argument is ignored.")
self.setWindowTitle(self.name)
self.layout = QtGui.QGridLayout(self)
self.layout = QtWidgets.QGridLayout(self)
self.resize(width, height)
self.row = 0
@@ -124,7 +116,7 @@ class Plugin(QtGui.QDialog):
the image matches the filtered value specified by attached widgets.
"""
self.setParent(image_viewer)
self.setWindowFlags(Qt.Dialog)
self.setWindowFlags(QtCore.Qt.Dialog)
self.image_viewer = image_viewer
self.image_viewer.plugins.append(self)
+1 -4
View File
@@ -1,8 +1,5 @@
import numpy as np
try:
import matplotlib.pyplot as plt
except ImportError:
pass
import matplotlib.pyplot as plt
from skimage import color
from skimage import exposure
from .plotplugin import PlotPlugin
+1 -1
View File
@@ -1,6 +1,6 @@
import numpy as np
from ..qt import QtGui
from ..qt import QtGui
from ..utils import new_plot
from .base import Plugin
+8
View File
@@ -0,0 +1,8 @@
try:
from matplotlib.backends.qt_compat import QtGui, QtCore, QtWidgets
except ImportError:
from matplotlib.backends.qt4_compat import QtGui, QtCore
QtWidgets = QtGui
Qt = QtCore.Qt
Signal = QtCore.Signal
-22
View File
@@ -1,22 +0,0 @@
from . import qt_api
if qt_api == 'pyside':
from PySide.QtCore import *
elif qt_api == 'pyqt':
from PyQt4.QtCore import *
# Use pyside names for signals and slots
Signal = pyqtSignal
Slot = pyqtSlot
else:
# Mock objects for buildbot (which doesn't have Qt, but imports viewer).
class Qt(object):
TopDockWidgetArea = None
BottomDockWidgetArea = None
LeftDockWidgetArea = None
RightDockWidgetArea = None
def Signal(*args, **kwargs):
pass
def Slot(*args, **kwargs):
pass
-11
View File
@@ -1,11 +0,0 @@
from . import qt_api
if qt_api == 'pyside':
from PySide.QtGui import *
elif qt_api == 'pyqt':
from PyQt4.QtGui import *
else:
# Mock objects
QMainWindow = object
QDialog = object
QWidget = object
-5
View File
@@ -1,5 +0,0 @@
This qt subpackage provides a wrapper to allow use of either PySide or PyQt4.
In addition, if neither package is available, some mock objects are created to
prevent errors in the TravisCI build. Only the objects used in the global
namespace need to be mocked (e.g., a Qt object that gets subclassed is used
in the global namespace).
-22
View File
@@ -1,22 +0,0 @@
import os
import warnings
qt_api = os.environ.get('QT_API')
if qt_api is None:
try:
import PyQt4
qt_api = 'pyqt'
except ImportError:
try:
import PySide
qt_api = 'pyside'
except ImportError:
qt_api = None
# Note that we don't want to raise an error because that would
# cause the TravisCI build to fail.
warnings.warn("Could not import PyQt4: ImageViewer not available!")
if qt_api is not None:
os.environ['QT_API'] = qt_api
+22 -11
View File
@@ -4,15 +4,26 @@ import skimage
import skimage.data as data
from skimage.filters.rank import median
from skimage.morphology import disk
from skimage.viewer import ImageViewer, viewer_available
try:
from skimage.viewer import ImageViewer
from skimage.viewer.plugins.base import Plugin
from skimage.viewer.widgets import Slider
from skimage.viewer.plugins import (
LineProfile, Measure, CannyPlugin, LabelPainter, Crop, ColorHistogram,
PlotPlugin)
except ImportError:
ImageViewer is None
from numpy.testing import assert_equal, assert_allclose, assert_almost_equal
from numpy.testing.decorators import skipif
<<<<<<< HEAD
from skimage.viewer.plugins import (
LineProfile, Measure, CannyPlugin, LabelPainter, Crop, ColorHistogram,
PlotPlugin)
from skimage.viewer.plugins.base import Plugin
from skimage.viewer.widgets import Slider
from skimage._shared._warnings import expected_warnings
=======
>>>>>>> 7e2fdf7... Update viewer for PyQt5 compatibility
def setup_line_profile(image, limits='image'):
@@ -22,7 +33,7 @@ def setup_line_profile(image, limits='image'):
return plugin
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_line_profile():
""" Test a line profile using an ndim=2 image"""
plugin = setup_line_profile(data.camera())
@@ -36,7 +47,7 @@ def test_line_profile():
assert_allclose(scan_data.mean(), 0.2812, rtol=1e-3)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_line_profile_rgb():
""" Test a line profile using an ndim=3 image"""
plugin = setup_line_profile(data.chelsea(), limits=None)
@@ -51,7 +62,7 @@ def test_line_profile_rgb():
assert_allclose(scan_data.mean(), 0.4359, rtol=1e-3)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_line_profile_dynamic():
"""Test a line profile updating after an image transform"""
image = data.coins()[:-50, :] # shave some off to make the line lower
@@ -77,7 +88,7 @@ def test_line_profile_dynamic():
assert_almost_equal(np.max(line) - np.min(line), 0.639, 1)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_measure():
image = data.camera()
viewer = ImageViewer(image)
@@ -89,7 +100,7 @@ def test_measure():
assert_equal(str(m._angle.text[:5]), '135.0')
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_canny():
image = data.camera()
viewer = ImageViewer(image)
@@ -102,7 +113,7 @@ def test_canny():
assert edges.sum() == 2852
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_label_painter():
image = data.camera()
moon = data.moon()
@@ -120,7 +131,7 @@ def test_label_painter():
assert_equal(lp.paint_tool.shape, moon.shape)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_crop():
image = data.camera()
viewer = ImageViewer(image)
@@ -131,7 +142,7 @@ def test_crop():
assert_equal(viewer.image.shape, (101, 101))
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_color_histogram():
image = skimage.img_as_float(data.load('color.png'))
viewer = ImageViewer(image)
@@ -143,7 +154,7 @@ def test_color_histogram():
assert_almost_equal(viewer.image.std(), 0.325, 3)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_plot_plugin():
viewer = ImageViewer(data.moon())
plugin = PlotPlugin(image_filter=lambda x: x)
@@ -155,7 +166,7 @@ def test_plot_plugin():
viewer.close()
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_plugin():
img = skimage.img_as_float(data.moon())
viewer = ImageViewer(img)
+30
View File
@@ -4,12 +4,22 @@ import numpy as np
from numpy.testing import assert_equal
from numpy.testing.decorators import skipif
from skimage import data
<<<<<<< HEAD
from skimage.viewer import ImageViewer, viewer_available
from skimage.viewer.canvastools import (
LineTool, ThickLineTool, RectangleTool, PaintTool)
from skimage.viewer.canvastools.base import CanvasToolBase
from matplotlib.testing.decorators import cleanup
=======
try:
from skimage.viewer import ImageViewer
from skimage.viewer.canvastools import (
LineTool, ThickLineTool, RectangleTool, PaintTool)
from skimage.viewer.canvastools.base import CanvasToolBase
except ImportError:
ImageViewer = None
>>>>>>> 7e2fdf7... Update viewer for PyQt5 compatibility
def get_end_points(image):
@@ -74,8 +84,12 @@ def do_event(viewer, etype, button=1, xdata=0, ydata=0, key=None):
func(event)
<<<<<<< HEAD
@cleanup
@skipif(not viewer_available)
=======
@skipif(ImageViewer is None)
>>>>>>> 7e2fdf7... Update viewer for PyQt5 compatibility
def test_line_tool():
img = data.camera()
viewer = ImageViewer(img)
@@ -100,8 +114,12 @@ def test_line_tool():
assert_equal(tool.geometry, np.array([[100, 100], [10, 10]]))
<<<<<<< HEAD
@cleanup
@skipif(not viewer_available)
=======
@skipif(ImageViewer is None)
>>>>>>> 7e2fdf7... Update viewer for PyQt5 compatibility
def test_thick_line_tool():
img = data.camera()
viewer = ImageViewer(img)
@@ -124,8 +142,12 @@ def test_thick_line_tool():
assert_equal(tool.linewidth, 1)
<<<<<<< HEAD
@cleanup
@skipif(not viewer_available)
=======
@skipif(ImageViewer is None)
>>>>>>> 7e2fdf7... Update viewer for PyQt5 compatibility
def test_rect_tool():
img = data.camera()
viewer = ImageViewer(img)
@@ -153,8 +175,12 @@ def test_rect_tool():
assert_equal(tool.geometry, [10, 100, 10, 100])
<<<<<<< HEAD
@cleanup
@skipif(not viewer_available)
=======
@skipif(ImageViewer is None)
>>>>>>> 7e2fdf7... Update viewer for PyQt5 compatibility
def test_paint_tool():
img = data.moon()
viewer = ImageViewer(img)
@@ -187,8 +213,12 @@ def test_paint_tool():
assert_equal(tool.overlay.sum(), 0)
<<<<<<< HEAD
@cleanup
@skipif(not viewer_available)
=======
@skipif(ImageViewer is None)
>>>>>>> 7e2fdf7... Update viewer for PyQt5 compatibility
def test_base_tool():
img = data.moon()
viewer = ImageViewer(img)
+10 -10
View File
@@ -1,14 +1,14 @@
# -*- coding: utf-8 -*-
from skimage.viewer import viewer_available
from skimage.viewer.qt import QtCore, QtGui
from skimage.viewer import utils
from skimage.viewer.utils import dialogs
try:
from skimage.viewer import utils
from skimage.viewer.utils import dialogs
from skimage.viewer.qt import QtCore, QtGui
except ImportError:
QtCore = None
from numpy.testing.decorators import skipif
from skimage.viewer import utils
from skimage.viewer.utils import dialogs
@skipif(not viewer_available)
@skipif(QtCore is None)
def test_event_loop():
utils.init_qtapp()
timer = QtCore.QTimer()
@@ -16,7 +16,7 @@ def test_event_loop():
utils.start_qtapp()
@skipif(not viewer_available)
@skipif(QtCore is None)
def test_format_filename():
fname = dialogs._format_filename(('apple', 2))
assert fname == 'apple'
@@ -24,7 +24,7 @@ def test_format_filename():
assert fname is None
@skipif(not viewer_available)
@skipif(QtCore is None)
def test_open_file_dialog():
utils.init_qtapp()
timer = QtCore.QTimer()
@@ -33,7 +33,7 @@ def test_open_file_dialog():
assert filename is None
@skipif(not viewer_available)
@skipif(QtCore is None)
def test_save_file_dialog():
utils.init_qtapp()
timer = QtCore.QTimer()
+9 -6
View File
@@ -1,9 +1,12 @@
from skimage import data
from skimage.viewer.qt import QtGui, QtCore
from skimage.viewer import ImageViewer, CollectionViewer, viewer_available
try:
from skimage.viewer.qt import QtGui, QtCore
from skimage.viewer import ImageViewer, CollectionViewer
from skimage.viewer.plugins import OverlayPlugin
except ImportError:
ImageViewer = None
from skimage.transform import pyramid_gaussian
from skimage.viewer.plugins import OverlayPlugin
from skimage.filters import sobel
from numpy.testing import assert_equal
from numpy.testing.decorators import skipif
@@ -11,7 +14,7 @@ from skimage._shared.version_requirements import is_installed
from skimage._shared._warnings import expected_warnings
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_viewer():
astro = data.astronaut()
coins = data.coins()
@@ -38,7 +41,7 @@ def make_key_event(key):
QtCore.Qt.NoModifier)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_collection_viewer():
img = data.astronaut()
@@ -54,7 +57,7 @@ def test_collection_viewer():
view._format_coord(10, 10)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
@skipif(not is_installed('matplotlib', '>=1.2'))
def test_viewer_with_overlay():
img = data.coins()
+15 -12
View File
@@ -1,11 +1,14 @@
import os
from skimage import data, img_as_float, io, img_as_uint
from skimage.viewer import ImageViewer, viewer_available
from skimage.viewer.widgets import (
Slider, OKCancelButtons, SaveButtons, ComboBox, CheckBox, Text)
from skimage.viewer.plugins.base import Plugin
from skimage.viewer.qt import QtGui, QtCore
try:
from skimage.viewer import ImageViewer
from skimage.viewer.qt import QtGui, QtCore
from skimage.viewer.widgets import (
Slider, OKCancelButtons, SaveButtons, ComboBox, CheckBox, Text)
from skimage.viewer.plugins.base import Plugin
except ImportError:
ImageViewer = None
from numpy.testing import assert_almost_equal, assert_equal
from numpy.testing.decorators import skipif
from skimage._shared._warnings import expected_warnings
@@ -18,7 +21,7 @@ def get_image_viewer():
return viewer
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_check_box():
viewer = get_image_viewer()
cb = CheckBox('hello', value=True, alignment='left')
@@ -33,7 +36,7 @@ def test_check_box():
assert_equal(cb.val, False)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_combo_box():
viewer = get_image_viewer()
cb = ComboBox('hello', ('a', 'b', 'c'))
@@ -46,7 +49,7 @@ def test_combo_box():
assert_equal(cb.index, 2)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_text_widget():
viewer = get_image_viewer()
txt = Text('hello', 'hello, world!')
@@ -57,7 +60,7 @@ def test_text_widget():
assert_equal(str(txt.text), 'goodbye, world!')
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_slider_int():
viewer = get_image_viewer()
sld = Slider('radius', 2, 10, value_type='int')
@@ -71,7 +74,7 @@ def test_slider_int():
assert_equal(sld.val, 5)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_slider_float():
viewer = get_image_viewer()
sld = Slider('alpha', 2.1, 3.1, value=2.1, value_type='float',
@@ -86,7 +89,7 @@ def test_slider_float():
assert_almost_equal(sld.val, 2.5, 2)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_save_buttons():
viewer = get_image_viewer()
sv = SaveButtons()
@@ -114,7 +117,7 @@ def test_save_buttons():
os.remove(filename)
@skipif(not viewer_available)
@skipif(ImageViewer is None)
def test_ok_buttons():
viewer = get_image_viewer()
ok = OKCancelButtons()
+10 -21
View File
@@ -1,28 +1,17 @@
import warnings
import numpy as np
from skimage.viewer.qt import QtGui
import matplotlib as mpl
from matplotlib.figure import Figure
from matplotlib import _pylab_helpers
from matplotlib.colors import LinearSegmentedColormap
from ..qt import qt_api
try:
import matplotlib as mpl
from matplotlib.figure import Figure
from matplotlib import _pylab_helpers
from matplotlib.colors import LinearSegmentedColormap
if not qt_api is None:
from matplotlib.backends.backend_qt4 import FigureManagerQT
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
if 'agg' not in mpl.get_backend().lower():
print("Recommended matplotlib backend is `Agg` for full "
"skimage.viewer functionality.")
else:
FigureCanvasQTAgg = object
LinearSegmentedColormap = object
except ImportError:
FigureCanvasQTAgg = object # hack to prevent nosetest and autodoc errors
LinearSegmentedColormap = object
from ..qt import QtGui
from matplotlib.backends.backend_qt4 import FigureManagerQT
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
if 'agg' not in mpl.get_backend().lower():
warnings.warn("Recommended matplotlib backend is `Agg` for full "
"skimage.viewer functionality.")
__all__ = ['init_qtapp', 'start_qtapp', 'RequiredAttr', 'figimage',
+1 -1
View File
@@ -1,6 +1,6 @@
import os
from ..qt import QtGui
from skimage.viewer.qt import QtGui
__all__ = ['open_file_dialog', 'save_file_dialog']
+13 -19
View File
@@ -1,21 +1,15 @@
"""
ImageViewer class for viewing and interacting with images.
"""
from ..qt import QtGui, qt_api
from ..qt.QtCore import Qt, Signal
if qt_api is not None:
has_qt = True
else:
has_qt = False
from skimage.viewer.qt import QtWidgets, Qt, Signal
from skimage import io, img_as_float
from skimage.util.dtype import dtype_range
from skimage.exposure import rescale_intensity
import numpy as np
from .. import utils
from ..widgets import Slider
from ..utils import dialogs
from ..utils import (
dialogs, init_qtapp, figimage, start_qtapp, update_axes_image)
from ..plugins.base import Plugin
@@ -152,7 +146,7 @@ class EventManager(object):
tool.on_scroll(event)
class ImageViewer(QtGui.QMainWindow):
class ImageViewer(QtWidgets.QMainWindow):
"""Viewer for displaying images.
This viewer is a simple container object that holds a Matplotlib axes
@@ -194,7 +188,7 @@ class ImageViewer(QtGui.QMainWindow):
def __init__(self, image, useblit=True):
# Start main loop
utils.init_qtapp()
init_qtapp()
super(ImageViewer, self).__init__()
#TODO: Add ImageViewer to skimage.io window manager
@@ -202,7 +196,7 @@ class ImageViewer(QtGui.QMainWindow):
self.setAttribute(Qt.WA_DeleteOnClose)
self.setWindowTitle("Image Viewer")
self.file_menu = QtGui.QMenu('&File', self)
self.file_menu = QtWidgets.QMenu('&File', self)
self.file_menu.addAction('Open file', self.open_file,
Qt.CTRL + Qt.Key_O)
self.file_menu.addAction('Save to file', self.save_to_file,
@@ -211,7 +205,7 @@ class ImageViewer(QtGui.QMainWindow):
Qt.CTRL + Qt.Key_Q)
self.menuBar().addMenu(self.file_menu)
self.main_widget = QtGui.QWidget()
self.main_widget = QtWidgets.QWidget()
self.setCentralWidget(self.main_widget)
if isinstance(image, Plugin):
@@ -221,7 +215,7 @@ class ImageViewer(QtGui.QMainWindow):
# When plugin is started, start
plugin._started.connect(self._show)
self.fig, self.ax = utils.figimage(image)
self.fig, self.ax = figimage(image)
self.canvas = self.fig.canvas
self.canvas.setParent(self)
self.ax.autoscale(enable=False)
@@ -236,7 +230,7 @@ class ImageViewer(QtGui.QMainWindow):
self._update_original_image(image)
self.plugins = []
self.layout = QtGui.QVBoxLayout(self.main_widget)
self.layout = QtWidgets.QVBoxLayout(self.main_widget)
self.layout.addWidget(self.canvas)
status_bar = self.statusBar()
@@ -255,7 +249,7 @@ class ImageViewer(QtGui.QMainWindow):
if plugin.dock:
location = self.dock_areas[plugin.dock]
dock_location = Qt.DockWidgetArea(location)
dock = QtGui.QDockWidget()
dock = QtWidgets.QDockWidget()
dock.setWidget(plugin)
dock.setWindowTitle(plugin.name)
self.addDockWidget(dock_location, dock)
@@ -341,7 +335,7 @@ class ImageViewer(QtGui.QMainWindow):
"""
self._show()
if main_window:
utils.start_qtapp()
start_qtapp()
return [p.output() for p in self.plugins]
def redraw(self):
@@ -357,7 +351,7 @@ class ImageViewer(QtGui.QMainWindow):
@image.setter
def image(self, image):
self._img = image
utils.update_axes_image(self._image_plot, image)
update_axes_image(self._image_plot, image)
# update display (otherwise image doesn't fill the canvas)
h, w = image.shape[:2]
@@ -487,7 +481,7 @@ class CollectionViewer(ImageViewer):
self._update_original_image(image)
def keyPressEvent(self, event):
if type(event) == QtGui.QKeyEvent:
if type(event) == QtWidgets.QKeyEvent:
key = event.key()
# Number keys (code: 0 = key 48, 9 = key 57) move to deciles
if 48 <= key < 58:
+17 -21
View File
@@ -15,17 +15,15 @@ parameter type specified by its `ptype` attribute, which can be:
property of the same name that updates the display.
"""
from ..qt import QtGui
from ..qt import QtCore
from ..qt.QtCore import Qt
from ..qt import QtWidgets, QtCore, Qt
from ..utils import RequiredAttr
__all__ = ['BaseWidget', 'Slider', 'ComboBox', 'CheckBox', 'Text']
class BaseWidget(QtGui.QWidget):
class BaseWidget(QtWidgets.QWidget):
plugin = RequiredAttr("Widget is not attached to a Plugin.")
@@ -49,11 +47,11 @@ class Text(BaseWidget):
def __init__(self, name=None, text=''):
super(Text, self).__init__(name)
self._label = QtGui.QLabel()
self._label = QtWidgets.QLabel()
self.text = text
self.layout = QtGui.QHBoxLayout(self)
self.layout = QtWidgets.QHBoxLayout(self)
if name is not None:
name_label = QtGui.QLabel()
name_label = QtWidgets.QLabel()
name_label.setText(name)
self.layout.addWidget(name_label)
self.layout.addWidget(self._label)
@@ -105,17 +103,17 @@ class Slider(BaseWidget):
# Set widget orientation
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if orientation == 'vertical':
self.slider = QtGui.QSlider(Qt.Vertical)
self.slider = QtWidgets.QSlider(Qt.Vertical)
alignment = QtCore.Qt.AlignHCenter
align_text = QtCore.Qt.AlignHCenter
align_value = QtCore.Qt.AlignHCenter
self.layout = QtGui.QVBoxLayout(self)
self.layout = QtWidgets.QVBoxLayout(self)
elif orientation == 'horizontal':
self.slider = QtGui.QSlider(Qt.Horizontal)
self.slider = QtWidgets.QSlider(Qt.Horizontal)
alignment = QtCore.Qt.AlignVCenter
align_text = QtCore.Qt.AlignLeft
align_value = QtCore.Qt.AlignRight
self.layout = QtGui.QHBoxLayout(self)
self.layout = QtWidgets.QHBoxLayout(self)
else:
msg = "Unexpected value %s for 'orientation'"
raise ValueError(msg % orientation)
@@ -151,11 +149,11 @@ class Slider(BaseWidget):
raise ValueError("Unexpected value %s for 'update_on'" % update_on)
self.slider.setFocusPolicy(QtCore.Qt.StrongFocus)
self.name_label = QtGui.QLabel()
self.name_label = QtWidgets.QLabel()
self.name_label.setText(self.name)
self.name_label.setAlignment(align_text)
self.editbox = QtGui.QLineEdit()
self.editbox = QtWidgets.QLineEdit()
self.editbox.setMaximumWidth(max_edit_width)
self.editbox.setText(self.value_fmt % self.val)
self.editbox.setAlignment(align_value)
@@ -229,20 +227,18 @@ class ComboBox(BaseWidget):
def __init__(self, name, items, ptype='kwarg', callback=None):
super(ComboBox, self).__init__(name, ptype, callback)
self.name_label = QtGui.QLabel()
self.name_label = QtWidgets.QLabel()
self.name_label.setText(self.name)
self.name_label.setAlignment(QtCore.Qt.AlignLeft)
self._combo_box = QtGui.QComboBox()
self._combo_box = QtWidgets.QComboBox()
self._combo_box.addItems(list(items))
self.layout = QtGui.QHBoxLayout(self)
self.layout = QtWidgets.QHBoxLayout(self)
self.layout.addWidget(self.name_label)
self.layout.addWidget(self._combo_box)
self._combo_box.currentIndexChanged.connect(self._value_changed)
# self.connect(self._combo_box,
# SIGNAL("currentIndexChanged(int)"), self.updateUi)
@property
def val(self):
@@ -283,11 +279,11 @@ class CheckBox(BaseWidget):
callback=None):
super(CheckBox, self).__init__(name, ptype, callback)
self._check_box = QtGui.QCheckBox()
self._check_box = QtWidgets.QCheckBox()
self._check_box.setChecked(value)
self._check_box.setText(self.name)
self.layout = QtGui.QHBoxLayout(self)
self.layout = QtWidgets.QHBoxLayout(self)
if alignment == 'center':
self.layout.setAlignment(QtCore.Qt.AlignCenter)
elif alignment == 'left':
+1 -3
View File
@@ -1,8 +1,6 @@
from textwrap import dedent
from ..qt import QtGui
from ..qt import QtCore
from ..qt import QtGui, QtCore
import numpy as np
import skimage