PyQt5 based qtpy fallback

This commit is contained in:
Dmitri Bogomolov 2019-02-11 18:48:57 +02:00
parent bc89000035
commit 6864b4465a
Signed by untrusted user: g1itch
GPG Key ID: 720A756F18DEED13
3 changed files with 41 additions and 4 deletions

View File

@ -145,7 +145,7 @@ def createSupportMessage(myapp):
opensslversion = "%s (Python internal), %s (external for PyElliptic)" % ( opensslversion = "%s (Python internal), %s (external for PyElliptic)" % (
ssl.OPENSSL_VERSION, OpenSSL._version) ssl.OPENSSL_VERSION, OpenSSL._version)
qtapi = os.environ['QT_API'] qtapi = os.environ.get('QT_API', 'fallback')
frozen = "N/A" frozen = "N/A"
if paths.frozen: if paths.frozen:

View File

@ -383,9 +383,13 @@ def check_pyqt():
PyQt 4.8 or later. PyQt 4.8 or later.
""" """
# pylint: disable=no-member # pylint: disable=no-member
qtpy = try_import( try:
'qtpy', from fallback import qtpy
'PyBitmessage requires qtpy, PyQt 4.8 or later and Qt 4.7 or later.') except ImportError:
logger.error(
'PyBitmessage requires qtpy, PyQt 4.8 or later and Qt 4.7 or later.'
)
qtpy = None
if not qtpy: if not qtpy:
return False return False

View File

@ -30,3 +30,36 @@ else:
if data: if data:
hasher.update(data) hasher.update(data)
return hasher return hasher
try:
import qtpy
except ImportError:
try:
from PyQt5 import QtCore, QtGui, QtWidgets, QtNetwork, uic
except ImportError:
qtpy = None
else:
import sys
import types
QtCore.Signal = QtCore.pyqtSignal
context = {
'API': 'pyqt5', # for tr
'PYQT_VERSION': QtCore.PYQT_VERSION_STR,
'QT_VERSION': QtCore.QT_VERSION_STR,
'QtCore': QtCore,
'QtGui': QtGui,
'QtWidgets': QtWidgets,
'QtNetwork': QtNetwork,
'uic': uic
}
try:
from PyQt5 import QtTest
except ImportError:
pass
else:
context['QtTest'] = QtTest
qtpy = types.ModuleType(
'qtpy', 'PyQt5 based dynamic fallback for qtpy')
qtpy.__dict__.update(context)
sys.modules['qtpy'] = qtpy