From eecf0eacb6ab9f01fc76bbf21e1b246241b5dec5 Mon Sep 17 00:00:00 2001 From: Kentaro Wada Date: Sun, 15 Apr 2018 12:53:01 +0900 Subject: [PATCH] Use qtpy to abstract Qt python binding --- labelme/app.py | 21 +++++++-------------- labelme/canvas.py | 26 ++++++++++---------------- labelme/colorDialog.py | 5 +---- labelme/labelDialog.py | 14 ++++---------- labelme/lib.py | 11 +++-------- labelme/shape.py | 5 +---- labelme/toolBar.py | 8 ++------ labelme/zoomWidget.py | 11 +++-------- setup.py | 1 + tests/test_labelDialog.py | 8 ++------ 10 files changed, 34 insertions(+), 76 deletions(-) diff --git a/labelme/app.py b/labelme/app.py index d2e88ed..04da136 100644 --- a/labelme/app.py +++ b/labelme/app.py @@ -6,18 +6,11 @@ import re import subprocess import sys -try: - from PyQt5 import QtCore - from PyQt5.QtCore import Qt - from PyQt5 import QtGui - from PyQt5 import QtWidgets - PYQT5 = True -except ImportError: - from PyQt4 import QtCore - from PyQt4.QtCore import Qt - from PyQt4 import QtGui - from PyQt4 import QtGui as QtWidgets - PYQT5 = False +from qtpy import PYQT5 +from qtpy import QtCore +from qtpy.QtCore import Qt +from qtpy import QtGui +from qtpy import QtWidgets from labelme.canvas import Canvas from labelme.colorDialog import ColorDialog @@ -979,7 +972,7 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin): filename = QtWidgets.QFileDialog.getOpenFileName( self, '%s - Choose Image or Label file' % __appname__, path, filters) - if PYQT5: + if qtpy.PYQT5: filename, _ = filename filename = str(filename) if filename: @@ -1015,7 +1008,7 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin): filename = dlg.getSaveFileName( self, 'Choose File', default_labelfile_name, 'Label files (*%s)' % LabelFile.suffix) - if PYQT5: + if qtpy.PYQT5: filename, _ = filename filename = str(filename) return filename diff --git a/labelme/canvas.py b/labelme/canvas.py index 33b74eb..919e131 100644 --- a/labelme/canvas.py +++ b/labelme/canvas.py @@ -2,16 +2,10 @@ from __future__ import print_function import sys -try: - from PyQt5 import QtCore - from PyQt5 import QtGui - from PyQt5 import QtWidgets - PYQT5 = True -except ImportError: - from PyQt4 import QtCore - from PyQt4 import QtGui - from PyQt4 import QtGui as QtWidgets - PYQT5 = False +from qtpy import PYQT5 +from qtpy import QtCore +from qtpy import QtGui +from qtpy import QtWidgets from labelme.lib import distance from labelme.shape import Shape @@ -29,12 +23,12 @@ CURSOR_GRAB = QtCore.Qt.OpenHandCursor class Canvas(QtWidgets.QWidget): - zoomRequest = QtCore.pyqtSignal(int, QtCore.QPoint) - scrollRequest = QtCore.pyqtSignal(int, int) - newShape = QtCore.pyqtSignal() - selectionChanged = QtCore.pyqtSignal(bool) - shapeMoved = QtCore.pyqtSignal() - drawingPolygon = QtCore.pyqtSignal(bool) + zoomRequest = QtCore.Signal(int, QtCore.QPoint) + scrollRequest = QtCore.Signal(int, int) + newShape = QtCore.Signal() + selectionChanged = QtCore.Signal(bool) + shapeMoved = QtCore.Signal() + drawingPolygon = QtCore.Signal(bool) CREATE, EDIT = 0, 1 diff --git a/labelme/colorDialog.py b/labelme/colorDialog.py index b10bead..e56143d 100644 --- a/labelme/colorDialog.py +++ b/labelme/colorDialog.py @@ -1,7 +1,4 @@ -try: - from PyQt5 import QtWidgets -except ImportError: - from PyQt4 import QtGui as QtWidgets +from qtpy import QtWidgets class ColorDialog(QtWidgets.QColorDialog): diff --git a/labelme/labelDialog.py b/labelme/labelDialog.py index 2e5136a..6e42c28 100644 --- a/labelme/labelDialog.py +++ b/labelme/labelDialog.py @@ -1,13 +1,7 @@ -try: - from PyQt5 import QtCore - from PyQt5 import QtGui - from PyQt5 import QtWidgets - PYQT5 = True -except ImportError: - from PyQt4 import QtCore - from PyQt4 import QtGui - from PyQt4 import QtGui as QtWidgets - PYQT5 = False +from qtpy import PYQT5 +from qtpy import QtCore +from qtpy import QtGui +from qtpy import QtWidgets from .lib import labelValidator from .lib import newIcon diff --git a/labelme/lib.py b/labelme/lib.py index aa2d144..1394715 100644 --- a/labelme/lib.py +++ b/labelme/lib.py @@ -1,14 +1,9 @@ from math import sqrt import os.path as osp -try: - from PyQt5 import QtCore - from PyQt5 import QtGui - from PyQt5 import QtWidgets -except ImportError: - from PyQt4 import QtCore - from PyQt4 import QtGui - from PyQt4 import QtGui as QtWidgets +from qtpy import QtCore +from qtpy import QtGui +from qtpy import QtWidgets here = osp.dirname(osp.abspath(__file__)) diff --git a/labelme/shape.py b/labelme/shape.py index 8935195..f89bf16 100644 --- a/labelme/shape.py +++ b/labelme/shape.py @@ -1,7 +1,4 @@ -try: - from PyQt5 import QtGui -except ImportError: - from PyQt4 import QtGui +from qtpy import QtGui from .lib import distance diff --git a/labelme/toolBar.py b/labelme/toolBar.py index 119cb3f..9bfe176 100644 --- a/labelme/toolBar.py +++ b/labelme/toolBar.py @@ -1,9 +1,5 @@ -try: - from PyQt5 import QtCore - from PyQt5 import QtWidgets -except ImportError: - from PyQt4 import QtCore - from PyQt4 import QtGui as QtWidgets +from qtpy import QtCore +from qtpy import QtWidgets class ToolBar(QtWidgets.QToolBar): diff --git a/labelme/zoomWidget.py b/labelme/zoomWidget.py index 64305bb..7a224b9 100644 --- a/labelme/zoomWidget.py +++ b/labelme/zoomWidget.py @@ -1,11 +1,6 @@ -try: - from PyQt5 import QtCore - from PyQt5 import QtGui - from PyQt5 import QtWidgets -except ImportError: - from PyQt4 import QtCore - from PyQt4 import QtGui - from PyQt4 import QtGui as QtWidgets +from qtpy import QtCore +from qtpy import QtGui +from qtpy import QtWidgets class ZoomWidget(QtWidgets.QSpinBox): diff --git a/setup.py b/setup.py index 4ddbf85..69fdef2 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,7 @@ install_requires = [ 'numpy', 'Pillow>=2.8.0', 'PyYAML', + 'qtpy', ] diff --git a/tests/test_labelDialog.py b/tests/test_labelDialog.py index 15648e1..1a87766 100644 --- a/tests/test_labelDialog.py +++ b/tests/test_labelDialog.py @@ -1,9 +1,5 @@ -try: - from PyQt5 import QtCore - from PyQt5 import QtWidgets -except ImportError: - from PyQt4 import QtCore - from PyQt4 import QtGui as QtWidgets +from qtpy import QtCore +from qtpy import QtWidgets from labelme import labelDialog -- GitLab