If a Qt version is already imported, attempt to use it first

This commit is contained in:
Andrew Murray 2018-05-29 21:21:53 +10:00
parent e06e2777bc
commit 821862c401

View File

@ -19,25 +19,33 @@
from . import Image from . import Image
from ._util import isPath, py3 from ._util import isPath, py3
from io import BytesIO from io import BytesIO
import sys
qt_is_installed = True qt_versions = [
qt_version = None ['5', 'PyQt5'],
try: ['4', 'PyQt4'],
from PyQt5.QtGui import QImage, qRgba, QPixmap ['side', 'PySide']
from PyQt5.QtCore import QBuffer, QIODevice ]
qt_version = '5' # If a version has already been imported, attempt it first
except (ImportError, RuntimeError): qt_versions.sort(key=lambda qt_version: qt_version[1] in sys.modules, reverse=True)
for qt_version, qt_module in qt_versions:
try: try:
from PyQt4.QtGui import QImage, qRgba, QPixmap if qt_module == 'PyQt5':
from PyQt4.QtCore import QBuffer, QIODevice from PyQt5.QtGui import QImage, qRgba, QPixmap
qt_version = '4' from PyQt5.QtCore import QBuffer, QIODevice
except (ImportError, RuntimeError): elif qt_module == 'PyQt4':
try: from PyQt4.QtGui import QImage, qRgba, QPixmap
from PyQt4.QtCore import QBuffer, QIODevice
elif qt_module == 'PySide':
from PySide.QtGui import QImage, qRgba, QPixmap from PySide.QtGui import QImage, qRgba, QPixmap
from PySide.QtCore import QBuffer, QIODevice from PySide.QtCore import QBuffer, QIODevice
qt_version = 'side' except (ImportError, RuntimeError):
except ImportError: continue
qt_is_installed = False qt_is_installed = True
break
else:
qt_is_installed = False
qt_version = None
def rgb(r, g, b, a=255): def rgb(r, g, b, a=255):