diff --git a/manual/plugin_examples/editor_demo/main.py b/manual/plugin_examples/editor_demo/main.py index a354d35695..33cbf501ba 100644 --- a/manual/plugin_examples/editor_demo/main.py +++ b/manual/plugin_examples/editor_demo/main.py @@ -6,7 +6,7 @@ __license__ = 'GPL v3' __copyright__ = '2014, Kovid Goyal ' import re -from PyQt5.Qt import QAction, QInputDialog +from qt.core import QAction, QInputDialog from css_parser.css import CSSRule # The base class that all tools must inherit from diff --git a/manual/plugin_examples/interface_demo/config.py b/manual/plugin_examples/interface_demo/config.py index 80b6769c53..00319b0e22 100644 --- a/manual/plugin_examples/interface_demo/config.py +++ b/manual/plugin_examples/interface_demo/config.py @@ -6,7 +6,7 @@ __license__ = 'GPL v3' __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' -from PyQt5.Qt import QWidget, QHBoxLayout, QLabel, QLineEdit +from qt.core import QWidget, QHBoxLayout, QLabel, QLineEdit from calibre.utils.config import JSONConfig diff --git a/manual/plugin_examples/interface_demo/main.py b/manual/plugin_examples/interface_demo/main.py index ad218f4e3a..d9417b3a87 100644 --- a/manual/plugin_examples/interface_demo/main.py +++ b/manual/plugin_examples/interface_demo/main.py @@ -12,7 +12,7 @@ if False: # You do not need this code in your plugins get_icons = get_resources = None -from PyQt5.Qt import QDialog, QVBoxLayout, QPushButton, QMessageBox, QLabel +from qt.core import QDialog, QVBoxLayout, QPushButton, QMessageBox, QLabel from calibre_plugins.interface_demo.config import prefs diff --git a/manual/plugin_examples/webengine_demo/main.py b/manual/plugin_examples/webengine_demo/main.py index 6a3c85485b..c776f726df 100644 --- a/manual/plugin_examples/webengine_demo/main.py +++ b/manual/plugin_examples/webengine_demo/main.py @@ -3,8 +3,8 @@ # License: GPL v3 Copyright: 2019, Kovid Goyal -from PyQt5.Qt import QUrl -from PyQt5.QtWebEngineWidgets import QWebEngineView +from qt.core import QUrl +from qt.webengine import QWebEngineView from calibre.gui2 import Application diff --git a/manual/plugin_examples/webengine_demo/ui.py b/manual/plugin_examples/webengine_demo/ui.py index fcfe14ac88..d5fa6f9afc 100644 --- a/manual/plugin_examples/webengine_demo/ui.py +++ b/manual/plugin_examples/webengine_demo/ui.py @@ -11,7 +11,7 @@ if False: # The class that all interface action plugins must inherit from from calibre.gui2.actions import InterfaceAction -from PyQt5.Qt import QInputDialog +from qt.core import QInputDialog class InterfacePlugin(InterfaceAction): diff --git a/setup.cfg b/setup.cfg index e11048c6c9..86c939f88f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -16,5 +16,6 @@ combine_as_imports = True line_length = 85 multi_line_output = 5 known_future_library = __python__ +known_third_party = qt known_standard_library = aes,elementmaker,encodings known_first_party = calibre_extensions diff --git a/src/calibre/ebooks/oeb/polish/check/css.py b/src/calibre/ebooks/oeb/polish/check/css.py index 74ffe3b85a..ad18275141 100644 --- a/src/calibre/ebooks/oeb/polish/check/css.py +++ b/src/calibre/ebooks/oeb/polish/check/css.py @@ -9,11 +9,7 @@ import sys from collections import namedtuple from itertools import repeat -try: - from PyQt5 import sip -except ImportError: - import sip -from qt.core import QApplication, QEventLoop, pyqtSignal +from qt.core import QApplication, QEventLoop, pyqtSignal, sip from qt.webengine import ( QWebEnginePage, QWebEngineProfile, QWebEngineScript ) diff --git a/src/calibre/ebooks/pdf/render/gradients.py b/src/calibre/ebooks/pdf/render/gradients.py index 86ad45391f..f39feedfdf 100644 --- a/src/calibre/ebooks/pdf/render/gradients.py +++ b/src/calibre/ebooks/pdf/render/gradients.py @@ -10,11 +10,7 @@ import sys, copy from polyglot.builtins import map, range from collections import namedtuple -from qt.core import QLinearGradient, QPointF -try: - from PyQt5 import sip -except ImportError: - import sip +from qt.core import QLinearGradient, QPointF, sip from calibre.ebooks.pdf.render.common import Name, Array, Dictionary diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index ea4e94e9fe..a3c006b717 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -1468,7 +1468,6 @@ if is_running_from_develop: def event_type_name(ev_or_etype): - from PyQt5.QtCore import QEvent etype = ev_or_etype.type() if isinstance(ev_or_etype, QEvent) else ev_or_etype for name, num in iteritems(vars(QEvent)): if num == etype: diff --git a/src/calibre/gui2/actions/choose_library.py b/src/calibre/gui2/actions/choose_library.py index 2499722dac..cd650c6db0 100644 --- a/src/calibre/gui2/actions/choose_library.py +++ b/src/calibre/gui2/actions/choose_library.py @@ -601,7 +601,7 @@ class ChooseLibraryAction(InterfaceAction): # from calibre.utils.mem import memory # import weakref - # from PyQt5.Qt import QTimer + # from qt.core import QTimer # self.dbref = weakref.ref(self.gui.library_view.model().db) # self.before_mem = memory() self.gui.library_moved(loc, allow_rebuild=True) diff --git a/src/calibre/gui2/actions/show_book_details.py b/src/calibre/gui2/actions/show_book_details.py index 0bb041a588..018f754f13 100644 --- a/src/calibre/gui2/actions/show_book_details.py +++ b/src/calibre/gui2/actions/show_book_details.py @@ -6,11 +6,7 @@ __license__ = 'GPL v3' __copyright__ = '2010, Kovid Goyal ' __docformat__ = 'restructuredtext en' -from qt.core import Qt -try: - from PyQt5 import sip -except ImportError: - import sip +from qt.core import Qt, sip from calibre.gui2.actions import InterfaceAction from calibre.gui2.dialogs.book_info import BookInfo diff --git a/src/calibre/gui2/bars.py b/src/calibre/gui2/bars.py index 3edfb7f115..9be3723bc6 100644 --- a/src/calibre/gui2/bars.py +++ b/src/calibre/gui2/bars.py @@ -9,11 +9,7 @@ __docformat__ = 'restructuredtext en' from functools import partial from qt.core import ( Qt, QAction, QMenu, QObject, QToolBar, QToolButton, QSize, pyqtSignal, QKeySequence, - QTimer, QPropertyAnimation, QEasingCurve, pyqtProperty, QPainter, QWidget, QPalette) -try: - from PyQt5 import sip -except ImportError: - import sip + QTimer, QPropertyAnimation, QEasingCurve, pyqtProperty, QPainter, QWidget, QPalette, sip) from calibre.constants import ismacos from calibre.gui2 import gprefs, native_menubar_defaults, config diff --git a/src/calibre/gui2/catalog/catalog_epub_mobi.py b/src/calibre/gui2/catalog/catalog_epub_mobi.py index 9864522f38..813beada14 100644 --- a/src/calibre/gui2/catalog/catalog_epub_mobi.py +++ b/src/calibre/gui2/catalog/catalog_epub_mobi.py @@ -21,11 +21,7 @@ from .catalog_epub_mobi_ui import Ui_Form from qt.core import (Qt, QAbstractItemView, QCheckBox, QComboBox, QDoubleSpinBox, QIcon, QInputDialog, QLineEdit, QRadioButton, QSize, QSizePolicy, QTableWidget, QTableWidgetItem, QTextEdit, QToolButton, - QUrl, QVBoxLayout, QWidget) -try: - from PyQt5 import sip -except ImportError: - import sip + QUrl, QVBoxLayout, QWidget, sip) class PluginWidget(QWidget,Ui_Form): diff --git a/src/calibre/gui2/complete2.py b/src/calibre/gui2/complete2.py index 3ac2349460..3dcb64f8f4 100644 --- a/src/calibre/gui2/complete2.py +++ b/src/calibre/gui2/complete2.py @@ -9,11 +9,7 @@ __docformat__ = 'restructuredtext en' from qt.core import ( QLineEdit, QAbstractListModel, Qt, pyqtSignal, QObject, QKeySequence, QAbstractItemView, QApplication, QListView, QPoint, QModelIndex, QEvent, - QStyleOptionComboBox, QStyle, QComboBox, QTimer) -try: - from PyQt5 import sip -except ImportError: - import sip + QStyleOptionComboBox, QStyle, QComboBox, QTimer, sip) from calibre.constants import ismacos from calibre.utils.icu import sort_key, primary_startswith, primary_contains diff --git a/src/calibre/gui2/icon_theme.py b/src/calibre/gui2/icon_theme.py index ca6790f14c..5bcc1fb42a 100644 --- a/src/calibre/gui2/icon_theme.py +++ b/src/calibre/gui2/icon_theme.py @@ -15,13 +15,9 @@ from qt.core import ( QImageReader, QFormLayout, QVBoxLayout, QSplitter, QGroupBox, QListWidget, QLineEdit, QSpinBox, QTextEdit, QSize, QListWidgetItem, QIcon, QImage, pyqtSignal, QStackedLayout, QWidget, QLabel, Qt, QComboBox, QPixmap, QDialog, - QGridLayout, QStyledItemDelegate, QApplication, QStaticText, + QGridLayout, QStyledItemDelegate, QApplication, QStaticText, sip, QStyle, QPen, QProgressDialog, QAbstractItemView, QDialogButtonBox ) -try: - from PyQt5 import sip -except ImportError: - import sip from calibre import walk, fit_image, human_readable, detect_ncpus as cpu_count from calibre.constants import cache_dir, config_dir diff --git a/src/calibre/gui2/job_indicator.py b/src/calibre/gui2/job_indicator.py index 7181f968c1..6152b36d9a 100644 --- a/src/calibre/gui2/job_indicator.py +++ b/src/calibre/gui2/job_indicator.py @@ -43,7 +43,7 @@ class Pointer(QWidget): self.color.setAlpha(100) self.brush = QBrush(self.color, Qt.BrushStyle.SolidPattern) - # from PyQt5.Qt import QTimer + # from qt.core import QTimer # QTimer.singleShot(1000, self.start) @property diff --git a/src/calibre/gui2/keyboard.py b/src/calibre/gui2/keyboard.py index e422bd0009..f401714882 100644 --- a/src/calibre/gui2/keyboard.py +++ b/src/calibre/gui2/keyboard.py @@ -12,11 +12,7 @@ from functools import partial from qt.core import (QObject, QKeySequence, QAbstractItemModel, QModelIndex, QItemSelectionModel, Qt, QStyledItemDelegate, QTextDocument, QStyle, pyqtSignal, QFrame, QAbstractItemView, QApplication, QSize, QRectF, QWidget, QTreeView, QHBoxLayout, QVBoxLayout, QAbstractItemDelegate, - QGridLayout, QLabel, QRadioButton, QPushButton, QToolButton, QIcon, QEvent) -try: - from PyQt5 import sip -except ImportError: - import sip + QGridLayout, QLabel, QRadioButton, QPushButton, QToolButton, QIcon, QEvent, sip) from calibre.utils.config import JSONConfig from calibre.constants import DEBUG diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index f832c0e919..715e3b1a60 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -361,7 +361,7 @@ class MainWindowMixin(object): # {{{ try: self.setUnifiedTitleAndToolBarOnMac(True) except AttributeError: - pass # PyQt5 seems to be missing this property + pass # PyQt seems to be missing this property # And now, start adding the real widgets l.addWidget(self.search_bar) diff --git a/src/calibre/gui2/metadata/pdf_covers.py b/src/calibre/gui2/metadata/pdf_covers.py index 52adbde79f..16d17e2782 100644 --- a/src/calibre/gui2/metadata/pdf_covers.py +++ b/src/calibre/gui2/metadata/pdf_covers.py @@ -12,12 +12,8 @@ from glob import glob from qt.core import ( QDialog, QApplication, QLabel, QVBoxLayout, QDialogButtonBox, Qt, QAbstractItemView, QListView, - pyqtSignal, QListWidget, QListWidgetItem, QSize, QPixmap, QStyledItemDelegate + pyqtSignal, QListWidget, QListWidgetItem, QSize, QPixmap, QStyledItemDelegate, sip ) -try: - from PyQt5 import sip -except ImportError: - import sip from calibre import as_unicode from calibre.ebooks.metadata.pdf import page_images diff --git a/src/calibre/gui2/preferences/server.py b/src/calibre/gui2/preferences/server.py index ba62a554cb..a7090d75fe 100644 --- a/src/calibre/gui2/preferences/server.py +++ b/src/calibre/gui2/preferences/server.py @@ -14,7 +14,7 @@ from qt.core import ( QCheckBox, QComboBox, QDialog, QDialogButtonBox, QDoubleSpinBox, QFormLayout, QFrame, QHBoxLayout, QIcon, QLabel, QLineEdit, QListWidget, QPlainTextEdit, QLayout, QPushButton, QScrollArea, QSize, QSizePolicy, QSpinBox, Qt, QTabWidget, QTimer, - QToolButton, QUrl, QVBoxLayout, QWidget, pyqtSignal + QToolButton, QUrl, QVBoxLayout, QWidget, pyqtSignal, sip ) from calibre import as_unicode @@ -37,11 +37,6 @@ from calibre.utils.icu import primary_sort_key from calibre.utils.shared_file import share_open from polyglot.builtins import as_bytes, unicode_type -try: - from PyQt5 import sip -except ImportError: - import sip - if iswindows and not isportable: from calibre_extensions import winutil diff --git a/src/calibre/gui2/tweak_book/file_list.py b/src/calibre/gui2/tweak_book/file_list.py index 40e9c57c56..2db9313009 100644 --- a/src/calibre/gui2/tweak_book/file_list.py +++ b/src/calibre/gui2/tweak_book/file_list.py @@ -14,7 +14,7 @@ from qt.core import ( QGridLayout, QIcon, QInputDialog, QLabel, QLineEdit, QListWidget, QAbstractItemView, QListWidgetItem, QMenu, QPainter, QPixmap, QRadioButton, QScrollArea, QSize, QSpinBox, QStyle, QStyledItemDelegate, Qt, QTimer, QTreeWidget, QTreeWidgetItem, - QVBoxLayout, QWidget, pyqtSignal + QVBoxLayout, QWidget, pyqtSignal, sip ) from calibre import human_readable, sanitize_file_name @@ -42,11 +42,6 @@ from calibre_extensions.progress_indicator import set_no_activate_on_click from polyglot.binary import as_hex_unicode from polyglot.builtins import filter, iteritems, map, range, unicode_type -try: - from PyQt5 import sip -except ImportError: - import sip - FILE_COPY_MIME = 'application/calibre-edit-book-files' TOP_ICON_SIZE = 24 diff --git a/src/calibre/gui2/viewer/web_view.py b/src/calibre/gui2/viewer/web_view.py index 2a7faf2913..eca473f16a 100644 --- a/src/calibre/gui2/viewer/web_view.py +++ b/src/calibre/gui2/viewer/web_view.py @@ -10,7 +10,7 @@ from itertools import count from qt.core import ( QT_VERSION, QApplication, QBuffer, QByteArray, QEvent, QFontDatabase, QFontInfo, QHBoxLayout, QIODevice, QLocale, QMimeData, QPalette, QSize, Qt, QTimer, QUrl, - QWidget, pyqtSignal + QWidget, pyqtSignal, sip ) from qt.webengine import ( QWebEngineUrlRequestInfo, QWebEngineUrlRequestJob, QWebEngineUrlSchemeHandler @@ -41,11 +41,6 @@ from calibre.utils.shared_file import share_open from polyglot.builtins import as_bytes, iteritems, unicode_type from polyglot.functools import lru_cache -try: - from PyQt5 import sip -except ImportError: - import sip - SANDBOX_HOST = FAKE_HOST.rpartition('.')[0] + '.sandbox' # Override network access to load data from the book {{{ diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py index e76a4b85c6..adcbfe4ea6 100644 --- a/src/calibre/test_build.py +++ b/src/calibre/test_build.py @@ -286,11 +286,11 @@ class BuildTest(unittest.TestCase): @unittest.skipIf('SKIP_QT_BUILD_TEST' in os.environ, 'Skipping Qt build test as it causes crashes in the macOS VM') def test_qt(self): - from PyQt5.QtCore import QTimer - from PyQt5.QtWidgets import QApplication + from qt.core import QTimer + from qt.core import QApplication from qt.webengine import QWebEnginePage - from PyQt5.QtGui import QImageReader, QFontDatabase - from PyQt5.QtNetwork import QNetworkAccessManager + from qt.core import QImageReader, QFontDatabase + from qt.core import QNetworkAccessManager from calibre.utils.img import image_from_data, image_to_data, test # Ensure that images can be read before QApplication is constructed. # Note that this requires QCoreApplication.libraryPaths() to return the diff --git a/src/calibre/utils/img.py b/src/calibre/utils/img.py index c5855c8462..dfe5a3db6d 100644 --- a/src/calibre/utils/img.py +++ b/src/calibre/utils/img.py @@ -10,10 +10,9 @@ import subprocess import sys import tempfile from io import BytesIO -# We use explicit module imports so tracebacks when importing are more useful -from PyQt5.QtCore import QBuffer, QByteArray, Qt, QIODevice -from PyQt5.QtGui import ( - QColor, QImage, QImageReader, QImageWriter, QPixmap, QTransform +from qt.core import ( + QBuffer, QByteArray, QColor, QImage, QImageReader, QImageWriter, QIODevice, + QPixmap, Qt, QTransform ) from threading import Thread diff --git a/src/qt/__main__.py b/src/qt/__main__.py index a414e75e45..13d595070f 100644 --- a/src/qt/__main__.py +++ b/src/qt/__main__.py @@ -6,6 +6,8 @@ import importlib import os from pprint import pprint +QT_WRAPPER = 'PyQt5' + base = os.path.dirname(os.path.abspath(__file__)) module_lists = { 'core': ( @@ -29,8 +31,8 @@ def scan(name): name_map = {} types = [] for mod_name in module_names: - mod = importlib.import_module(f'PyQt5.{mod_name}') - full_name = mod.__name__ + mod = importlib.import_module(f'{QT_WRAPPER}.{mod_name}') + full_name = name_map[mod_name] = mod.__name__ types.append(f'import {full_name}') for obj_name in sorted(dir(mod)): if not obj_name.startswith('_') and obj_name not in name_map: @@ -38,11 +40,19 @@ def scan(name): types.append(f'{obj_name} = {full_name}.{obj_name}') with open(f'{base}/{name}.pyi', 'w') as f: print('# autogenerated by __main__.py do not edit', file=f) - f.write('\n'.join(sorted(types))) + f.write('\n'.join(types)) + if name == 'core': + module_names += ('sip',) + mod = importlib.import_module(f'{QT_WRAPPER}.sip') + name_map['sip'] = mod.__name__ + name_map['QtWin'] = f'{QT_WRAPPER}.QtWinExtras' with open(f'{base}/{name}_name_map.py', 'w') as f: print('# autogenerated by __main__.py do not edit', file=f) print('name_map =', end=' ', file=f) pprint(name_map, stream=f) + print('module_names = frozenset(', end='', file=f) + pprint(module_names, stream=f) + print(')', file=f) for name in ('core', 'webengine'): diff --git a/src/qt/core.py b/src/qt/core.py index 967ddb0138..ac1ad67a3f 100644 --- a/src/qt/core.py +++ b/src/qt/core.py @@ -4,11 +4,11 @@ from .loader import dynamic_load -from .core_name_map import name_map +from .core_name_map import name_map, module_names already_imported = {} qt_modules = {} def __getattr__(name): - return dynamic_load(name, name_map, already_imported, qt_modules) + return dynamic_load(name, name_map, already_imported, qt_modules, module_names) diff --git a/src/qt/core.pyi b/src/qt/core.pyi index 61ceb29240..bad1c7fc9e 100644 --- a/src/qt/core.pyi +++ b/src/qt/core.pyi @@ -1,260 +1,77 @@ # autogenerated by __main__.py do not edit +import PyQt5.QtCore PYQT_CONFIGURATION = PyQt5.QtCore.PYQT_CONFIGURATION PYQT_VERSION = PyQt5.QtCore.PYQT_VERSION PYQT_VERSION_STR = PyQt5.QtCore.PYQT_VERSION_STR QAbstractAnimation = PyQt5.QtCore.QAbstractAnimation -QAbstractButton = PyQt5.QtWidgets.QAbstractButton QAbstractEventDispatcher = PyQt5.QtCore.QAbstractEventDispatcher -QAbstractGraphicsShapeItem = PyQt5.QtWidgets.QAbstractGraphicsShapeItem -QAbstractItemDelegate = PyQt5.QtWidgets.QAbstractItemDelegate QAbstractItemModel = PyQt5.QtCore.QAbstractItemModel -QAbstractItemView = PyQt5.QtWidgets.QAbstractItemView QAbstractListModel = PyQt5.QtCore.QAbstractListModel QAbstractNativeEventFilter = PyQt5.QtCore.QAbstractNativeEventFilter -QAbstractNetworkCache = PyQt5.QtNetwork.QAbstractNetworkCache -QAbstractOpenGLFunctions = PyQt5.QtGui.QAbstractOpenGLFunctions -QAbstractPrintDialog = PyQt5.QtPrintSupport.QAbstractPrintDialog QAbstractProxyModel = PyQt5.QtCore.QAbstractProxyModel -QAbstractScrollArea = PyQt5.QtWidgets.QAbstractScrollArea -QAbstractSlider = PyQt5.QtWidgets.QAbstractSlider -QAbstractSocket = PyQt5.QtNetwork.QAbstractSocket -QAbstractSpinBox = PyQt5.QtWidgets.QAbstractSpinBox QAbstractState = PyQt5.QtCore.QAbstractState QAbstractTableModel = PyQt5.QtCore.QAbstractTableModel -QAbstractTextDocumentLayout = PyQt5.QtGui.QAbstractTextDocumentLayout QAbstractTransition = PyQt5.QtCore.QAbstractTransition -QAction = PyQt5.QtWidgets.QAction -QActionEvent = PyQt5.QtGui.QActionEvent -QActionGroup = PyQt5.QtWidgets.QActionGroup QAnimationGroup = PyQt5.QtCore.QAnimationGroup -QApplication = PyQt5.QtWidgets.QApplication -QAuthenticator = PyQt5.QtNetwork.QAuthenticator -QBackingStore = PyQt5.QtGui.QBackingStore QBasicTimer = PyQt5.QtCore.QBasicTimer QBitArray = PyQt5.QtCore.QBitArray -QBitmap = PyQt5.QtGui.QBitmap -QBoxLayout = PyQt5.QtWidgets.QBoxLayout -QBrush = PyQt5.QtGui.QBrush QBuffer = PyQt5.QtCore.QBuffer -QButtonGroup = PyQt5.QtWidgets.QButtonGroup QByteArray = PyQt5.QtCore.QByteArray QByteArrayMatcher = PyQt5.QtCore.QByteArrayMatcher QCalendar = PyQt5.QtCore.QCalendar -QCalendarWidget = PyQt5.QtWidgets.QCalendarWidget QCborError = PyQt5.QtCore.QCborError QCborKnownTags = PyQt5.QtCore.QCborKnownTags QCborSimpleType = PyQt5.QtCore.QCborSimpleType QCborStreamReader = PyQt5.QtCore.QCborStreamReader QCborStreamWriter = PyQt5.QtCore.QCborStreamWriter -QCheckBox = PyQt5.QtWidgets.QCheckBox QChildEvent = PyQt5.QtCore.QChildEvent -QClipboard = PyQt5.QtGui.QClipboard -QCloseEvent = PyQt5.QtGui.QCloseEvent QCollator = PyQt5.QtCore.QCollator QCollatorSortKey = PyQt5.QtCore.QCollatorSortKey -QColor = PyQt5.QtGui.QColor -QColorConstants = PyQt5.QtGui.QColorConstants -QColorDialog = PyQt5.QtWidgets.QColorDialog -QColorSpace = PyQt5.QtGui.QColorSpace -QColorTransform = PyQt5.QtGui.QColorTransform -QColumnView = PyQt5.QtWidgets.QColumnView -QComboBox = PyQt5.QtWidgets.QComboBox QCommandLineOption = PyQt5.QtCore.QCommandLineOption QCommandLineParser = PyQt5.QtCore.QCommandLineParser -QCommandLinkButton = PyQt5.QtWidgets.QCommandLinkButton -QCommonStyle = PyQt5.QtWidgets.QCommonStyle -QCompleter = PyQt5.QtWidgets.QCompleter QConcatenateTablesProxyModel = PyQt5.QtCore.QConcatenateTablesProxyModel -QConicalGradient = PyQt5.QtGui.QConicalGradient -QContextMenuEvent = PyQt5.QtGui.QContextMenuEvent QCoreApplication = PyQt5.QtCore.QCoreApplication QCryptographicHash = PyQt5.QtCore.QCryptographicHash -QCursor = PyQt5.QtGui.QCursor QDataStream = PyQt5.QtCore.QDataStream -QDataWidgetMapper = PyQt5.QtWidgets.QDataWidgetMapper QDate = PyQt5.QtCore.QDate -QDateEdit = PyQt5.QtWidgets.QDateEdit QDateTime = PyQt5.QtCore.QDateTime -QDateTimeEdit = PyQt5.QtWidgets.QDateTimeEdit QDeadlineTimer = PyQt5.QtCore.QDeadlineTimer -QDesktopServices = PyQt5.QtGui.QDesktopServices -QDesktopWidget = PyQt5.QtWidgets.QDesktopWidget -QDial = PyQt5.QtWidgets.QDial -QDialog = PyQt5.QtWidgets.QDialog -QDialogButtonBox = PyQt5.QtWidgets.QDialogButtonBox QDir = PyQt5.QtCore.QDir QDirIterator = PyQt5.QtCore.QDirIterator -QDirModel = PyQt5.QtWidgets.QDirModel -QDnsDomainNameRecord = PyQt5.QtNetwork.QDnsDomainNameRecord -QDnsHostAddressRecord = PyQt5.QtNetwork.QDnsHostAddressRecord -QDnsLookup = PyQt5.QtNetwork.QDnsLookup -QDnsMailExchangeRecord = PyQt5.QtNetwork.QDnsMailExchangeRecord -QDnsServiceRecord = PyQt5.QtNetwork.QDnsServiceRecord -QDnsTextRecord = PyQt5.QtNetwork.QDnsTextRecord -QDockWidget = PyQt5.QtWidgets.QDockWidget -QDoubleSpinBox = PyQt5.QtWidgets.QDoubleSpinBox -QDoubleValidator = PyQt5.QtGui.QDoubleValidator -QDrag = PyQt5.QtGui.QDrag -QDragEnterEvent = PyQt5.QtGui.QDragEnterEvent -QDragLeaveEvent = PyQt5.QtGui.QDragLeaveEvent -QDragMoveEvent = PyQt5.QtGui.QDragMoveEvent -QDropEvent = PyQt5.QtGui.QDropEvent QDynamicPropertyChangeEvent = PyQt5.QtCore.QDynamicPropertyChangeEvent QEasingCurve = PyQt5.QtCore.QEasingCurve QElapsedTimer = PyQt5.QtCore.QElapsedTimer -QEnterEvent = PyQt5.QtGui.QEnterEvent -QErrorMessage = PyQt5.QtWidgets.QErrorMessage QEvent = PyQt5.QtCore.QEvent QEventLoop = PyQt5.QtCore.QEventLoop QEventLoopLocker = PyQt5.QtCore.QEventLoopLocker QEventTransition = PyQt5.QtCore.QEventTransition -QExposeEvent = PyQt5.QtGui.QExposeEvent QFile = PyQt5.QtCore.QFile QFileDevice = PyQt5.QtCore.QFileDevice -QFileDialog = PyQt5.QtWidgets.QFileDialog -QFileIconProvider = PyQt5.QtWidgets.QFileIconProvider QFileInfo = PyQt5.QtCore.QFileInfo -QFileOpenEvent = PyQt5.QtGui.QFileOpenEvent QFileSelector = PyQt5.QtCore.QFileSelector -QFileSystemModel = PyQt5.QtWidgets.QFileSystemModel QFileSystemWatcher = PyQt5.QtCore.QFileSystemWatcher QFinalState = PyQt5.QtCore.QFinalState -QFocusEvent = PyQt5.QtGui.QFocusEvent -QFocusFrame = PyQt5.QtWidgets.QFocusFrame -QFont = PyQt5.QtGui.QFont -QFontComboBox = PyQt5.QtWidgets.QFontComboBox -QFontDatabase = PyQt5.QtGui.QFontDatabase -QFontDialog = PyQt5.QtWidgets.QFontDialog -QFontInfo = PyQt5.QtGui.QFontInfo -QFontMetrics = PyQt5.QtGui.QFontMetrics -QFontMetricsF = PyQt5.QtGui.QFontMetricsF -QFormLayout = PyQt5.QtWidgets.QFormLayout -QFrame = PyQt5.QtWidgets.QFrame QGenericArgument = PyQt5.QtCore.QGenericArgument QGenericReturnArgument = PyQt5.QtCore.QGenericReturnArgument -QGesture = PyQt5.QtWidgets.QGesture -QGestureEvent = PyQt5.QtWidgets.QGestureEvent -QGestureRecognizer = PyQt5.QtWidgets.QGestureRecognizer -QGlyphRun = PyQt5.QtGui.QGlyphRun -QGradient = PyQt5.QtGui.QGradient -QGraphicsAnchor = PyQt5.QtWidgets.QGraphicsAnchor -QGraphicsAnchorLayout = PyQt5.QtWidgets.QGraphicsAnchorLayout -QGraphicsBlurEffect = PyQt5.QtWidgets.QGraphicsBlurEffect -QGraphicsColorizeEffect = PyQt5.QtWidgets.QGraphicsColorizeEffect -QGraphicsDropShadowEffect = PyQt5.QtWidgets.QGraphicsDropShadowEffect -QGraphicsEffect = PyQt5.QtWidgets.QGraphicsEffect -QGraphicsEllipseItem = PyQt5.QtWidgets.QGraphicsEllipseItem -QGraphicsGridLayout = PyQt5.QtWidgets.QGraphicsGridLayout -QGraphicsItem = PyQt5.QtWidgets.QGraphicsItem -QGraphicsItemGroup = PyQt5.QtWidgets.QGraphicsItemGroup -QGraphicsLayout = PyQt5.QtWidgets.QGraphicsLayout -QGraphicsLayoutItem = PyQt5.QtWidgets.QGraphicsLayoutItem -QGraphicsLineItem = PyQt5.QtWidgets.QGraphicsLineItem -QGraphicsLinearLayout = PyQt5.QtWidgets.QGraphicsLinearLayout -QGraphicsObject = PyQt5.QtWidgets.QGraphicsObject -QGraphicsOpacityEffect = PyQt5.QtWidgets.QGraphicsOpacityEffect -QGraphicsPathItem = PyQt5.QtWidgets.QGraphicsPathItem -QGraphicsPixmapItem = PyQt5.QtWidgets.QGraphicsPixmapItem -QGraphicsPolygonItem = PyQt5.QtWidgets.QGraphicsPolygonItem -QGraphicsProxyWidget = PyQt5.QtWidgets.QGraphicsProxyWidget -QGraphicsRectItem = PyQt5.QtWidgets.QGraphicsRectItem -QGraphicsRotation = PyQt5.QtWidgets.QGraphicsRotation -QGraphicsScale = PyQt5.QtWidgets.QGraphicsScale -QGraphicsScene = PyQt5.QtWidgets.QGraphicsScene -QGraphicsSceneContextMenuEvent = PyQt5.QtWidgets.QGraphicsSceneContextMenuEvent -QGraphicsSceneDragDropEvent = PyQt5.QtWidgets.QGraphicsSceneDragDropEvent -QGraphicsSceneEvent = PyQt5.QtWidgets.QGraphicsSceneEvent -QGraphicsSceneHelpEvent = PyQt5.QtWidgets.QGraphicsSceneHelpEvent -QGraphicsSceneHoverEvent = PyQt5.QtWidgets.QGraphicsSceneHoverEvent -QGraphicsSceneMouseEvent = PyQt5.QtWidgets.QGraphicsSceneMouseEvent -QGraphicsSceneMoveEvent = PyQt5.QtWidgets.QGraphicsSceneMoveEvent -QGraphicsSceneResizeEvent = PyQt5.QtWidgets.QGraphicsSceneResizeEvent -QGraphicsSceneWheelEvent = PyQt5.QtWidgets.QGraphicsSceneWheelEvent -QGraphicsSimpleTextItem = PyQt5.QtWidgets.QGraphicsSimpleTextItem -QGraphicsSvgItem = PyQt5.QtSvg.QGraphicsSvgItem -QGraphicsTextItem = PyQt5.QtWidgets.QGraphicsTextItem -QGraphicsTransform = PyQt5.QtWidgets.QGraphicsTransform -QGraphicsView = PyQt5.QtWidgets.QGraphicsView -QGraphicsWidget = PyQt5.QtWidgets.QGraphicsWidget -QGridLayout = PyQt5.QtWidgets.QGridLayout -QGroupBox = PyQt5.QtWidgets.QGroupBox -QGuiApplication = PyQt5.QtGui.QGuiApplication -QHBoxLayout = PyQt5.QtWidgets.QHBoxLayout -QHeaderView = PyQt5.QtWidgets.QHeaderView -QHelpEvent = PyQt5.QtGui.QHelpEvent -QHideEvent = PyQt5.QtGui.QHideEvent QHistoryState = PyQt5.QtCore.QHistoryState -QHostAddress = PyQt5.QtNetwork.QHostAddress -QHostInfo = PyQt5.QtNetwork.QHostInfo -QHoverEvent = PyQt5.QtGui.QHoverEvent -QHstsPolicy = PyQt5.QtNetwork.QHstsPolicy -QHttp2Configuration = PyQt5.QtNetwork.QHttp2Configuration -QHttpMultiPart = PyQt5.QtNetwork.QHttpMultiPart -QHttpPart = PyQt5.QtNetwork.QHttpPart QIODevice = PyQt5.QtCore.QIODevice -QIcon = PyQt5.QtGui.QIcon -QIconDragEvent = PyQt5.QtGui.QIconDragEvent -QIconEngine = PyQt5.QtGui.QIconEngine QIdentityProxyModel = PyQt5.QtCore.QIdentityProxyModel -QImage = PyQt5.QtGui.QImage -QImageIOHandler = PyQt5.QtGui.QImageIOHandler -QImageReader = PyQt5.QtGui.QImageReader -QImageWriter = PyQt5.QtGui.QImageWriter -QInputDialog = PyQt5.QtWidgets.QInputDialog -QInputEvent = PyQt5.QtGui.QInputEvent -QInputMethod = PyQt5.QtGui.QInputMethod -QInputMethodEvent = PyQt5.QtGui.QInputMethodEvent -QInputMethodQueryEvent = PyQt5.QtGui.QInputMethodQueryEvent -QIntValidator = PyQt5.QtGui.QIntValidator -QItemDelegate = PyQt5.QtWidgets.QItemDelegate -QItemEditorCreatorBase = PyQt5.QtWidgets.QItemEditorCreatorBase -QItemEditorFactory = PyQt5.QtWidgets.QItemEditorFactory QItemSelection = PyQt5.QtCore.QItemSelection QItemSelectionModel = PyQt5.QtCore.QItemSelectionModel QItemSelectionRange = PyQt5.QtCore.QItemSelectionRange QJsonDocument = PyQt5.QtCore.QJsonDocument QJsonParseError = PyQt5.QtCore.QJsonParseError QJsonValue = PyQt5.QtCore.QJsonValue -QKeyEvent = PyQt5.QtGui.QKeyEvent -QKeyEventTransition = PyQt5.QtWidgets.QKeyEventTransition -QKeySequence = PyQt5.QtGui.QKeySequence -QKeySequenceEdit = PyQt5.QtWidgets.QKeySequenceEdit -QLCDNumber = PyQt5.QtWidgets.QLCDNumber -QLabel = PyQt5.QtWidgets.QLabel -QLayout = PyQt5.QtWidgets.QLayout -QLayoutItem = PyQt5.QtWidgets.QLayoutItem QLibrary = PyQt5.QtCore.QLibrary QLibraryInfo = PyQt5.QtCore.QLibraryInfo QLine = PyQt5.QtCore.QLine -QLineEdit = PyQt5.QtWidgets.QLineEdit QLineF = PyQt5.QtCore.QLineF -QLinearGradient = PyQt5.QtGui.QLinearGradient -QListView = PyQt5.QtWidgets.QListView -QListWidget = PyQt5.QtWidgets.QListWidget -QListWidgetItem = PyQt5.QtWidgets.QListWidgetItem -QLocalServer = PyQt5.QtNetwork.QLocalServer -QLocalSocket = PyQt5.QtNetwork.QLocalSocket QLocale = PyQt5.QtCore.QLocale QLockFile = PyQt5.QtCore.QLockFile QLoggingCategory = PyQt5.QtCore.QLoggingCategory -QMainWindow = PyQt5.QtWidgets.QMainWindow QMargins = PyQt5.QtCore.QMargins QMarginsF = PyQt5.QtCore.QMarginsF -QMatrix2x2 = PyQt5.QtGui.QMatrix2x2 -QMatrix2x3 = PyQt5.QtGui.QMatrix2x3 -QMatrix2x4 = PyQt5.QtGui.QMatrix2x4 -QMatrix3x2 = PyQt5.QtGui.QMatrix3x2 -QMatrix3x3 = PyQt5.QtGui.QMatrix3x3 -QMatrix3x4 = PyQt5.QtGui.QMatrix3x4 -QMatrix4x2 = PyQt5.QtGui.QMatrix4x2 -QMatrix4x3 = PyQt5.QtGui.QMatrix4x3 -QMatrix4x4 = PyQt5.QtGui.QMatrix4x4 -QMdiArea = PyQt5.QtWidgets.QMdiArea -QMdiSubWindow = PyQt5.QtWidgets.QMdiSubWindow -QMenu = PyQt5.QtWidgets.QMenu -QMenuBar = PyQt5.QtWidgets.QMenuBar QMessageAuthenticationCode = PyQt5.QtCore.QMessageAuthenticationCode -QMessageBox = PyQt5.QtWidgets.QMessageBox QMessageLogContext = PyQt5.QtCore.QMessageLogContext QMessageLogger = PyQt5.QtCore.QMessageLogger QMetaClassInfo = PyQt5.QtCore.QMetaClassInfo @@ -267,327 +84,81 @@ QMimeData = PyQt5.QtCore.QMimeData QMimeDatabase = PyQt5.QtCore.QMimeDatabase QMimeType = PyQt5.QtCore.QMimeType QModelIndex = PyQt5.QtCore.QModelIndex -QMouseEvent = PyQt5.QtGui.QMouseEvent -QMouseEventTransition = PyQt5.QtWidgets.QMouseEventTransition -QMoveEvent = PyQt5.QtGui.QMoveEvent -QMovie = PyQt5.QtGui.QMovie QMutex = PyQt5.QtCore.QMutex QMutexLocker = PyQt5.QtCore.QMutexLocker -QNativeGestureEvent = PyQt5.QtGui.QNativeGestureEvent -QNetworkAccessManager = PyQt5.QtNetwork.QNetworkAccessManager -QNetworkAddressEntry = PyQt5.QtNetwork.QNetworkAddressEntry -QNetworkCacheMetaData = PyQt5.QtNetwork.QNetworkCacheMetaData -QNetworkConfiguration = PyQt5.QtNetwork.QNetworkConfiguration -QNetworkConfigurationManager = PyQt5.QtNetwork.QNetworkConfigurationManager -QNetworkCookie = PyQt5.QtNetwork.QNetworkCookie -QNetworkCookieJar = PyQt5.QtNetwork.QNetworkCookieJar -QNetworkDatagram = PyQt5.QtNetwork.QNetworkDatagram -QNetworkDiskCache = PyQt5.QtNetwork.QNetworkDiskCache -QNetworkInterface = PyQt5.QtNetwork.QNetworkInterface -QNetworkProxy = PyQt5.QtNetwork.QNetworkProxy -QNetworkProxyFactory = PyQt5.QtNetwork.QNetworkProxyFactory -QNetworkProxyQuery = PyQt5.QtNetwork.QNetworkProxyQuery -QNetworkReply = PyQt5.QtNetwork.QNetworkReply -QNetworkRequest = PyQt5.QtNetwork.QNetworkRequest -QNetworkSession = PyQt5.QtNetwork.QNetworkSession QObject = PyQt5.QtCore.QObject QObjectCleanupHandler = PyQt5.QtCore.QObjectCleanupHandler -QOcspCertificateStatus = PyQt5.QtNetwork.QOcspCertificateStatus -QOcspResponse = PyQt5.QtNetwork.QOcspResponse -QOcspRevocationReason = PyQt5.QtNetwork.QOcspRevocationReason -QOffscreenSurface = PyQt5.QtGui.QOffscreenSurface -QOpenGLBuffer = PyQt5.QtGui.QOpenGLBuffer -QOpenGLContext = PyQt5.QtGui.QOpenGLContext -QOpenGLContextGroup = PyQt5.QtGui.QOpenGLContextGroup -QOpenGLDebugLogger = PyQt5.QtGui.QOpenGLDebugLogger -QOpenGLDebugMessage = PyQt5.QtGui.QOpenGLDebugMessage -QOpenGLFramebufferObject = PyQt5.QtGui.QOpenGLFramebufferObject -QOpenGLFramebufferObjectFormat = PyQt5.QtGui.QOpenGLFramebufferObjectFormat -QOpenGLPaintDevice = PyQt5.QtGui.QOpenGLPaintDevice -QOpenGLPixelTransferOptions = PyQt5.QtGui.QOpenGLPixelTransferOptions -QOpenGLShader = PyQt5.QtGui.QOpenGLShader -QOpenGLShaderProgram = PyQt5.QtGui.QOpenGLShaderProgram -QOpenGLTexture = PyQt5.QtGui.QOpenGLTexture -QOpenGLTextureBlitter = PyQt5.QtGui.QOpenGLTextureBlitter -QOpenGLTimeMonitor = PyQt5.QtGui.QOpenGLTimeMonitor -QOpenGLTimerQuery = PyQt5.QtGui.QOpenGLTimerQuery -QOpenGLVersionProfile = PyQt5.QtGui.QOpenGLVersionProfile -QOpenGLVertexArrayObject = PyQt5.QtGui.QOpenGLVertexArrayObject -QOpenGLWidget = PyQt5.QtWidgets.QOpenGLWidget -QOpenGLWindow = PyQt5.QtGui.QOpenGLWindow QOperatingSystemVersion = PyQt5.QtCore.QOperatingSystemVersion -QPageLayout = PyQt5.QtGui.QPageLayout -QPageSetupDialog = PyQt5.QtPrintSupport.QPageSetupDialog -QPageSize = PyQt5.QtGui.QPageSize -QPagedPaintDevice = PyQt5.QtGui.QPagedPaintDevice -QPaintDevice = PyQt5.QtGui.QPaintDevice -QPaintDeviceWindow = PyQt5.QtGui.QPaintDeviceWindow -QPaintEngine = PyQt5.QtGui.QPaintEngine -QPaintEngineState = PyQt5.QtGui.QPaintEngineState -QPaintEvent = PyQt5.QtGui.QPaintEvent -QPainter = PyQt5.QtGui.QPainter -QPainterPath = PyQt5.QtGui.QPainterPath -QPainterPathStroker = PyQt5.QtGui.QPainterPathStroker -QPalette = PyQt5.QtGui.QPalette -QPanGesture = PyQt5.QtWidgets.QPanGesture QParallelAnimationGroup = PyQt5.QtCore.QParallelAnimationGroup -QPasswordDigestor = PyQt5.QtNetwork.QPasswordDigestor QPauseAnimation = PyQt5.QtCore.QPauseAnimation -QPdfWriter = PyQt5.QtGui.QPdfWriter -QPen = PyQt5.QtGui.QPen QPersistentModelIndex = PyQt5.QtCore.QPersistentModelIndex -QPicture = PyQt5.QtGui.QPicture -QPictureIO = PyQt5.QtGui.QPictureIO -QPinchGesture = PyQt5.QtWidgets.QPinchGesture -QPixelFormat = PyQt5.QtGui.QPixelFormat -QPixmap = PyQt5.QtGui.QPixmap -QPixmapCache = PyQt5.QtGui.QPixmapCache -QPlainTextDocumentLayout = PyQt5.QtWidgets.QPlainTextDocumentLayout -QPlainTextEdit = PyQt5.QtWidgets.QPlainTextEdit -QPlatformSurfaceEvent = PyQt5.QtGui.QPlatformSurfaceEvent QPluginLoader = PyQt5.QtCore.QPluginLoader QPoint = PyQt5.QtCore.QPoint QPointF = PyQt5.QtCore.QPointF -QPointingDeviceUniqueId = PyQt5.QtGui.QPointingDeviceUniqueId -QPolygon = PyQt5.QtGui.QPolygon -QPolygonF = PyQt5.QtGui.QPolygonF -QPrintDialog = PyQt5.QtPrintSupport.QPrintDialog -QPrintEngine = PyQt5.QtPrintSupport.QPrintEngine -QPrintPreviewDialog = PyQt5.QtPrintSupport.QPrintPreviewDialog -QPrintPreviewWidget = PyQt5.QtPrintSupport.QPrintPreviewWidget -QPrinter = PyQt5.QtPrintSupport.QPrinter -QPrinterInfo = PyQt5.QtPrintSupport.QPrinterInfo QProcess = PyQt5.QtCore.QProcess QProcessEnvironment = PyQt5.QtCore.QProcessEnvironment -QProgressBar = PyQt5.QtWidgets.QProgressBar -QProgressDialog = PyQt5.QtWidgets.QProgressDialog QPropertyAnimation = PyQt5.QtCore.QPropertyAnimation -QProxyStyle = PyQt5.QtWidgets.QProxyStyle -QPushButton = PyQt5.QtWidgets.QPushButton -QQuaternion = PyQt5.QtGui.QQuaternion -QRadialGradient = PyQt5.QtGui.QRadialGradient -QRadioButton = PyQt5.QtWidgets.QRadioButton QRandomGenerator = PyQt5.QtCore.QRandomGenerator -QRasterWindow = PyQt5.QtGui.QRasterWindow -QRawFont = PyQt5.QtGui.QRawFont QReadLocker = PyQt5.QtCore.QReadLocker QReadWriteLock = PyQt5.QtCore.QReadWriteLock QRect = PyQt5.QtCore.QRect QRectF = PyQt5.QtCore.QRectF QRecursiveMutex = PyQt5.QtCore.QRecursiveMutex QRegExp = PyQt5.QtCore.QRegExp -QRegExpValidator = PyQt5.QtGui.QRegExpValidator -QRegion = PyQt5.QtGui.QRegion QRegularExpression = PyQt5.QtCore.QRegularExpression QRegularExpressionMatch = PyQt5.QtCore.QRegularExpressionMatch QRegularExpressionMatchIterator = PyQt5.QtCore.QRegularExpressionMatchIterator -QRegularExpressionValidator = PyQt5.QtGui.QRegularExpressionValidator -QResizeEvent = PyQt5.QtGui.QResizeEvent QResource = PyQt5.QtCore.QResource -QRgba64 = PyQt5.QtGui.QRgba64 -QRubberBand = PyQt5.QtWidgets.QRubberBand QRunnable = PyQt5.QtCore.QRunnable QSaveFile = PyQt5.QtCore.QSaveFile -QScreen = PyQt5.QtGui.QScreen -QScrollArea = PyQt5.QtWidgets.QScrollArea -QScrollBar = PyQt5.QtWidgets.QScrollBar -QScrollEvent = PyQt5.QtGui.QScrollEvent -QScrollPrepareEvent = PyQt5.QtGui.QScrollPrepareEvent -QScroller = PyQt5.QtWidgets.QScroller -QScrollerProperties = PyQt5.QtWidgets.QScrollerProperties QSemaphore = PyQt5.QtCore.QSemaphore QSemaphoreReleaser = PyQt5.QtCore.QSemaphoreReleaser QSequentialAnimationGroup = PyQt5.QtCore.QSequentialAnimationGroup -QSessionManager = PyQt5.QtGui.QSessionManager QSettings = PyQt5.QtCore.QSettings QSharedMemory = PyQt5.QtCore.QSharedMemory -QShortcut = PyQt5.QtWidgets.QShortcut -QShortcutEvent = PyQt5.QtGui.QShortcutEvent -QShowEvent = PyQt5.QtGui.QShowEvent QSignalBlocker = PyQt5.QtCore.QSignalBlocker QSignalMapper = PyQt5.QtCore.QSignalMapper QSignalTransition = PyQt5.QtCore.QSignalTransition QSize = PyQt5.QtCore.QSize QSizeF = PyQt5.QtCore.QSizeF -QSizeGrip = PyQt5.QtWidgets.QSizeGrip -QSizePolicy = PyQt5.QtWidgets.QSizePolicy -QSlider = PyQt5.QtWidgets.QSlider QSocketNotifier = PyQt5.QtCore.QSocketNotifier QSortFilterProxyModel = PyQt5.QtCore.QSortFilterProxyModel -QSpacerItem = PyQt5.QtWidgets.QSpacerItem -QSpinBox = PyQt5.QtWidgets.QSpinBox -QSplashScreen = PyQt5.QtWidgets.QSplashScreen -QSplitter = PyQt5.QtWidgets.QSplitter -QSplitterHandle = PyQt5.QtWidgets.QSplitterHandle -QSsl = PyQt5.QtNetwork.QSsl -QSslCertificate = PyQt5.QtNetwork.QSslCertificate -QSslCertificateExtension = PyQt5.QtNetwork.QSslCertificateExtension -QSslCipher = PyQt5.QtNetwork.QSslCipher -QSslConfiguration = PyQt5.QtNetwork.QSslConfiguration -QSslDiffieHellmanParameters = PyQt5.QtNetwork.QSslDiffieHellmanParameters -QSslEllipticCurve = PyQt5.QtNetwork.QSslEllipticCurve -QSslError = PyQt5.QtNetwork.QSslError -QSslKey = PyQt5.QtNetwork.QSslKey -QSslPreSharedKeyAuthenticator = PyQt5.QtNetwork.QSslPreSharedKeyAuthenticator -QSslSocket = PyQt5.QtNetwork.QSslSocket -QStackedLayout = PyQt5.QtWidgets.QStackedLayout -QStackedWidget = PyQt5.QtWidgets.QStackedWidget -QStandardItem = PyQt5.QtGui.QStandardItem -QStandardItemModel = PyQt5.QtGui.QStandardItemModel QStandardPaths = PyQt5.QtCore.QStandardPaths QState = PyQt5.QtCore.QState QStateMachine = PyQt5.QtCore.QStateMachine -QStaticText = PyQt5.QtGui.QStaticText -QStatusBar = PyQt5.QtWidgets.QStatusBar -QStatusTipEvent = PyQt5.QtGui.QStatusTipEvent QStorageInfo = PyQt5.QtCore.QStorageInfo QStringListModel = PyQt5.QtCore.QStringListModel -QStyle = PyQt5.QtWidgets.QStyle -QStyleFactory = PyQt5.QtWidgets.QStyleFactory -QStyleHintReturn = PyQt5.QtWidgets.QStyleHintReturn -QStyleHintReturnMask = PyQt5.QtWidgets.QStyleHintReturnMask -QStyleHintReturnVariant = PyQt5.QtWidgets.QStyleHintReturnVariant -QStyleHints = PyQt5.QtGui.QStyleHints -QStyleOption = PyQt5.QtWidgets.QStyleOption -QStyleOptionButton = PyQt5.QtWidgets.QStyleOptionButton -QStyleOptionComboBox = PyQt5.QtWidgets.QStyleOptionComboBox -QStyleOptionComplex = PyQt5.QtWidgets.QStyleOptionComplex -QStyleOptionDockWidget = PyQt5.QtWidgets.QStyleOptionDockWidget -QStyleOptionFocusRect = PyQt5.QtWidgets.QStyleOptionFocusRect -QStyleOptionFrame = PyQt5.QtWidgets.QStyleOptionFrame -QStyleOptionGraphicsItem = PyQt5.QtWidgets.QStyleOptionGraphicsItem -QStyleOptionGroupBox = PyQt5.QtWidgets.QStyleOptionGroupBox -QStyleOptionHeader = PyQt5.QtWidgets.QStyleOptionHeader -QStyleOptionMenuItem = PyQt5.QtWidgets.QStyleOptionMenuItem -QStyleOptionProgressBar = PyQt5.QtWidgets.QStyleOptionProgressBar -QStyleOptionRubberBand = PyQt5.QtWidgets.QStyleOptionRubberBand -QStyleOptionSizeGrip = PyQt5.QtWidgets.QStyleOptionSizeGrip -QStyleOptionSlider = PyQt5.QtWidgets.QStyleOptionSlider -QStyleOptionSpinBox = PyQt5.QtWidgets.QStyleOptionSpinBox -QStyleOptionTab = PyQt5.QtWidgets.QStyleOptionTab -QStyleOptionTabBarBase = PyQt5.QtWidgets.QStyleOptionTabBarBase -QStyleOptionTabV4 = PyQt5.QtWidgets.QStyleOptionTabV4 -QStyleOptionTabWidgetFrame = PyQt5.QtWidgets.QStyleOptionTabWidgetFrame -QStyleOptionTitleBar = PyQt5.QtWidgets.QStyleOptionTitleBar -QStyleOptionToolBar = PyQt5.QtWidgets.QStyleOptionToolBar -QStyleOptionToolBox = PyQt5.QtWidgets.QStyleOptionToolBox -QStyleOptionToolButton = PyQt5.QtWidgets.QStyleOptionToolButton -QStyleOptionViewItem = PyQt5.QtWidgets.QStyleOptionViewItem -QStylePainter = PyQt5.QtWidgets.QStylePainter -QStyledItemDelegate = PyQt5.QtWidgets.QStyledItemDelegate -QSurface = PyQt5.QtGui.QSurface -QSurfaceFormat = PyQt5.QtGui.QSurfaceFormat -QSvgGenerator = PyQt5.QtSvg.QSvgGenerator -QSvgRenderer = PyQt5.QtSvg.QSvgRenderer -QSvgWidget = PyQt5.QtSvg.QSvgWidget -QSwipeGesture = PyQt5.QtWidgets.QSwipeGesture -QSyntaxHighlighter = PyQt5.QtGui.QSyntaxHighlighter QSysInfo = PyQt5.QtCore.QSysInfo QSystemSemaphore = PyQt5.QtCore.QSystemSemaphore -QSystemTrayIcon = PyQt5.QtWidgets.QSystemTrayIcon QT_TRANSLATE_NOOP = PyQt5.QtCore.QT_TRANSLATE_NOOP QT_TR_NOOP = PyQt5.QtCore.QT_TR_NOOP QT_TR_NOOP_UTF8 = PyQt5.QtCore.QT_TR_NOOP_UTF8 QT_VERSION = PyQt5.QtCore.QT_VERSION QT_VERSION_STR = PyQt5.QtCore.QT_VERSION_STR -QTabBar = PyQt5.QtWidgets.QTabBar -QTabWidget = PyQt5.QtWidgets.QTabWidget -QTableView = PyQt5.QtWidgets.QTableView -QTableWidget = PyQt5.QtWidgets.QTableWidget -QTableWidgetItem = PyQt5.QtWidgets.QTableWidgetItem -QTableWidgetSelectionRange = PyQt5.QtWidgets.QTableWidgetSelectionRange -QTabletEvent = PyQt5.QtGui.QTabletEvent -QTapAndHoldGesture = PyQt5.QtWidgets.QTapAndHoldGesture -QTapGesture = PyQt5.QtWidgets.QTapGesture -QTcpServer = PyQt5.QtNetwork.QTcpServer -QTcpSocket = PyQt5.QtNetwork.QTcpSocket QTemporaryDir = PyQt5.QtCore.QTemporaryDir QTemporaryFile = PyQt5.QtCore.QTemporaryFile -QTextBlock = PyQt5.QtGui.QTextBlock -QTextBlockFormat = PyQt5.QtGui.QTextBlockFormat -QTextBlockGroup = PyQt5.QtGui.QTextBlockGroup -QTextBlockUserData = PyQt5.QtGui.QTextBlockUserData QTextBoundaryFinder = PyQt5.QtCore.QTextBoundaryFinder -QTextBrowser = PyQt5.QtWidgets.QTextBrowser -QTextCharFormat = PyQt5.QtGui.QTextCharFormat QTextCodec = PyQt5.QtCore.QTextCodec -QTextCursor = PyQt5.QtGui.QTextCursor QTextDecoder = PyQt5.QtCore.QTextDecoder -QTextDocument = PyQt5.QtGui.QTextDocument -QTextDocumentFragment = PyQt5.QtGui.QTextDocumentFragment -QTextDocumentWriter = PyQt5.QtGui.QTextDocumentWriter -QTextEdit = PyQt5.QtWidgets.QTextEdit QTextEncoder = PyQt5.QtCore.QTextEncoder -QTextFormat = PyQt5.QtGui.QTextFormat -QTextFragment = PyQt5.QtGui.QTextFragment -QTextFrame = PyQt5.QtGui.QTextFrame -QTextFrameFormat = PyQt5.QtGui.QTextFrameFormat -QTextImageFormat = PyQt5.QtGui.QTextImageFormat -QTextInlineObject = PyQt5.QtGui.QTextInlineObject -QTextItem = PyQt5.QtGui.QTextItem -QTextLayout = PyQt5.QtGui.QTextLayout -QTextLength = PyQt5.QtGui.QTextLength -QTextLine = PyQt5.QtGui.QTextLine -QTextList = PyQt5.QtGui.QTextList -QTextListFormat = PyQt5.QtGui.QTextListFormat -QTextObject = PyQt5.QtGui.QTextObject -QTextObjectInterface = PyQt5.QtGui.QTextObjectInterface -QTextOption = PyQt5.QtGui.QTextOption QTextStream = PyQt5.QtCore.QTextStream QTextStreamManipulator = PyQt5.QtCore.QTextStreamManipulator -QTextTable = PyQt5.QtGui.QTextTable -QTextTableCell = PyQt5.QtGui.QTextTableCell -QTextTableCellFormat = PyQt5.QtGui.QTextTableCellFormat -QTextTableFormat = PyQt5.QtGui.QTextTableFormat QThread = PyQt5.QtCore.QThread QThreadPool = PyQt5.QtCore.QThreadPool QTime = PyQt5.QtCore.QTime -QTimeEdit = PyQt5.QtWidgets.QTimeEdit QTimeLine = PyQt5.QtCore.QTimeLine QTimeZone = PyQt5.QtCore.QTimeZone QTimer = PyQt5.QtCore.QTimer QTimerEvent = PyQt5.QtCore.QTimerEvent -QToolBar = PyQt5.QtWidgets.QToolBar -QToolBox = PyQt5.QtWidgets.QToolBox -QToolButton = PyQt5.QtWidgets.QToolButton -QToolTip = PyQt5.QtWidgets.QToolTip -QTouchDevice = PyQt5.QtGui.QTouchDevice -QTouchEvent = PyQt5.QtGui.QTouchEvent -QTransform = PyQt5.QtGui.QTransform QTranslator = PyQt5.QtCore.QTranslator QTransposeProxyModel = PyQt5.QtCore.QTransposeProxyModel -QTreeView = PyQt5.QtWidgets.QTreeView -QTreeWidget = PyQt5.QtWidgets.QTreeWidget -QTreeWidgetItem = PyQt5.QtWidgets.QTreeWidgetItem -QTreeWidgetItemIterator = PyQt5.QtWidgets.QTreeWidgetItemIterator -QUdpSocket = PyQt5.QtNetwork.QUdpSocket -QUndoCommand = PyQt5.QtWidgets.QUndoCommand -QUndoGroup = PyQt5.QtWidgets.QUndoGroup -QUndoStack = PyQt5.QtWidgets.QUndoStack -QUndoView = PyQt5.QtWidgets.QUndoView QUrl = PyQt5.QtCore.QUrl QUrlQuery = PyQt5.QtCore.QUrlQuery QUuid = PyQt5.QtCore.QUuid -QVBoxLayout = PyQt5.QtWidgets.QVBoxLayout -QValidator = PyQt5.QtGui.QValidator QVariant = PyQt5.QtCore.QVariant QVariantAnimation = PyQt5.QtCore.QVariantAnimation -QVector2D = PyQt5.QtGui.QVector2D -QVector3D = PyQt5.QtGui.QVector3D -QVector4D = PyQt5.QtGui.QVector4D QVersionNumber = PyQt5.QtCore.QVersionNumber -QWIDGETSIZE_MAX = PyQt5.QtWidgets.QWIDGETSIZE_MAX QWaitCondition = PyQt5.QtCore.QWaitCondition -QWhatsThis = PyQt5.QtWidgets.QWhatsThis -QWhatsThisClickedEvent = PyQt5.QtGui.QWhatsThisClickedEvent -QWheelEvent = PyQt5.QtGui.QWheelEvent -QWidget = PyQt5.QtWidgets.QWidget -QWidgetAction = PyQt5.QtWidgets.QWidgetAction -QWidgetItem = PyQt5.QtWidgets.QWidgetItem -QWindow = PyQt5.QtGui.QWindow -QWindowStateChangeEvent = PyQt5.QtGui.QWindowStateChangeEvent -QWizard = PyQt5.QtWidgets.QWizard -QWizardPage = PyQt5.QtWidgets.QWizardPage QWriteLocker = PyQt5.QtCore.QWriteLocker QXmlStreamAttribute = PyQt5.QtCore.QXmlStreamAttribute QXmlStreamAttributes = PyQt5.QtCore.QXmlStreamAttributes @@ -622,12 +193,6 @@ flush = PyQt5.QtCore.flush forcepoint = PyQt5.QtCore.forcepoint forcesign = PyQt5.QtCore.forcesign hex_ = PyQt5.QtCore.hex_ -import PyQt5.QtCore -import PyQt5.QtGui -import PyQt5.QtNetwork -import PyQt5.QtPrintSupport -import PyQt5.QtSvg -import PyQt5.QtWidgets left = PyQt5.QtCore.left lowercasebase = PyQt5.QtCore.lowercasebase lowercasedigits = PyQt5.QtCore.lowercasedigits @@ -646,51 +211,26 @@ pyqtSlot = PyQt5.QtCore.pyqtSlot qAbs = PyQt5.QtCore.qAbs qAddPostRoutine = PyQt5.QtCore.qAddPostRoutine qAddPreRoutine = PyQt5.QtCore.qAddPreRoutine -qAlpha = PyQt5.QtGui.qAlpha -qApp = PyQt5.QtWidgets.qApp -qBlue = PyQt5.QtGui.qBlue qChecksum = PyQt5.QtCore.qChecksum qCompress = PyQt5.QtCore.qCompress qCritical = PyQt5.QtCore.qCritical qDebug = PyQt5.QtCore.qDebug -qDrawBorderPixmap = PyQt5.QtWidgets.qDrawBorderPixmap -qDrawPlainRect = PyQt5.QtWidgets.qDrawPlainRect -qDrawShadeLine = PyQt5.QtWidgets.qDrawShadeLine -qDrawShadePanel = PyQt5.QtWidgets.qDrawShadePanel -qDrawShadeRect = PyQt5.QtWidgets.qDrawShadeRect -qDrawWinButton = PyQt5.QtWidgets.qDrawWinButton -qDrawWinPanel = PyQt5.QtWidgets.qDrawWinPanel qEnvironmentVariable = PyQt5.QtCore.qEnvironmentVariable qErrnoWarning = PyQt5.QtCore.qErrnoWarning qFatal = PyQt5.QtCore.qFatal qFloatDistance = PyQt5.QtCore.qFloatDistance qFormatLogMessage = PyQt5.QtCore.qFormatLogMessage qFuzzyCompare = PyQt5.QtCore.qFuzzyCompare -qGray = PyQt5.QtGui.qGray -qGreen = PyQt5.QtGui.qGreen qInf = PyQt5.QtCore.qInf qInfo = PyQt5.QtCore.qInfo qInstallMessageHandler = PyQt5.QtCore.qInstallMessageHandler qIsFinite = PyQt5.QtCore.qIsFinite -qIsGray = PyQt5.QtGui.qIsGray qIsInf = PyQt5.QtCore.qIsInf qIsNaN = PyQt5.QtCore.qIsNaN qIsNull = PyQt5.QtCore.qIsNull -qPixelFormatAlpha = PyQt5.QtGui.qPixelFormatAlpha -qPixelFormatCmyk = PyQt5.QtGui.qPixelFormatCmyk -qPixelFormatGrayscale = PyQt5.QtGui.qPixelFormatGrayscale -qPixelFormatHsl = PyQt5.QtGui.qPixelFormatHsl -qPixelFormatHsv = PyQt5.QtGui.qPixelFormatHsv -qPixelFormatRgba = PyQt5.QtGui.qPixelFormatRgba -qPixelFormatYuv = PyQt5.QtGui.qPixelFormatYuv -qPremultiply = PyQt5.QtGui.qPremultiply qQNaN = PyQt5.QtCore.qQNaN -qRed = PyQt5.QtGui.qRed qRegisterResourceData = PyQt5.QtCore.qRegisterResourceData qRemovePostRoutine = PyQt5.QtCore.qRemovePostRoutine -qRgb = PyQt5.QtGui.qRgb -qRgba = PyQt5.QtGui.qRgba -qRgba64 = PyQt5.QtGui.qRgba64 qRound = PyQt5.QtCore.qRound qRound64 = PyQt5.QtCore.qRound64 qSNaN = PyQt5.QtCore.qSNaN @@ -700,17 +240,477 @@ qSetPadChar = PyQt5.QtCore.qSetPadChar qSetRealNumberPrecision = PyQt5.QtCore.qSetRealNumberPrecision qSharedBuild = PyQt5.QtCore.qSharedBuild qUncompress = PyQt5.QtCore.qUncompress -qUnpremultiply = PyQt5.QtGui.qUnpremultiply qUnregisterResourceData = PyQt5.QtCore.qUnregisterResourceData qVersion = PyQt5.QtCore.qVersion qWarning = PyQt5.QtCore.qWarning qrand = PyQt5.QtCore.qrand qsrand = PyQt5.QtCore.qsrand -qt_set_sequence_auto_mnemonic = PyQt5.QtGui.qt_set_sequence_auto_mnemonic reset = PyQt5.QtCore.reset right = PyQt5.QtCore.right scientific = PyQt5.QtCore.scientific showbase = PyQt5.QtCore.showbase uppercasebase = PyQt5.QtCore.uppercasebase uppercasedigits = PyQt5.QtCore.uppercasedigits -ws = PyQt5.QtCore.ws \ No newline at end of file +ws = PyQt5.QtCore.ws +import PyQt5.QtGui +QAbstractOpenGLFunctions = PyQt5.QtGui.QAbstractOpenGLFunctions +QAbstractTextDocumentLayout = PyQt5.QtGui.QAbstractTextDocumentLayout +QActionEvent = PyQt5.QtGui.QActionEvent +QBackingStore = PyQt5.QtGui.QBackingStore +QBitmap = PyQt5.QtGui.QBitmap +QBrush = PyQt5.QtGui.QBrush +QClipboard = PyQt5.QtGui.QClipboard +QCloseEvent = PyQt5.QtGui.QCloseEvent +QColor = PyQt5.QtGui.QColor +QColorConstants = PyQt5.QtGui.QColorConstants +QColorSpace = PyQt5.QtGui.QColorSpace +QColorTransform = PyQt5.QtGui.QColorTransform +QConicalGradient = PyQt5.QtGui.QConicalGradient +QContextMenuEvent = PyQt5.QtGui.QContextMenuEvent +QCursor = PyQt5.QtGui.QCursor +QDesktopServices = PyQt5.QtGui.QDesktopServices +QDoubleValidator = PyQt5.QtGui.QDoubleValidator +QDrag = PyQt5.QtGui.QDrag +QDragEnterEvent = PyQt5.QtGui.QDragEnterEvent +QDragLeaveEvent = PyQt5.QtGui.QDragLeaveEvent +QDragMoveEvent = PyQt5.QtGui.QDragMoveEvent +QDropEvent = PyQt5.QtGui.QDropEvent +QEnterEvent = PyQt5.QtGui.QEnterEvent +QExposeEvent = PyQt5.QtGui.QExposeEvent +QFileOpenEvent = PyQt5.QtGui.QFileOpenEvent +QFocusEvent = PyQt5.QtGui.QFocusEvent +QFont = PyQt5.QtGui.QFont +QFontDatabase = PyQt5.QtGui.QFontDatabase +QFontInfo = PyQt5.QtGui.QFontInfo +QFontMetrics = PyQt5.QtGui.QFontMetrics +QFontMetricsF = PyQt5.QtGui.QFontMetricsF +QGlyphRun = PyQt5.QtGui.QGlyphRun +QGradient = PyQt5.QtGui.QGradient +QGuiApplication = PyQt5.QtGui.QGuiApplication +QHelpEvent = PyQt5.QtGui.QHelpEvent +QHideEvent = PyQt5.QtGui.QHideEvent +QHoverEvent = PyQt5.QtGui.QHoverEvent +QIcon = PyQt5.QtGui.QIcon +QIconDragEvent = PyQt5.QtGui.QIconDragEvent +QIconEngine = PyQt5.QtGui.QIconEngine +QImage = PyQt5.QtGui.QImage +QImageIOHandler = PyQt5.QtGui.QImageIOHandler +QImageReader = PyQt5.QtGui.QImageReader +QImageWriter = PyQt5.QtGui.QImageWriter +QInputEvent = PyQt5.QtGui.QInputEvent +QInputMethod = PyQt5.QtGui.QInputMethod +QInputMethodEvent = PyQt5.QtGui.QInputMethodEvent +QInputMethodQueryEvent = PyQt5.QtGui.QInputMethodQueryEvent +QIntValidator = PyQt5.QtGui.QIntValidator +QKeyEvent = PyQt5.QtGui.QKeyEvent +QKeySequence = PyQt5.QtGui.QKeySequence +QLinearGradient = PyQt5.QtGui.QLinearGradient +QMatrix2x2 = PyQt5.QtGui.QMatrix2x2 +QMatrix2x3 = PyQt5.QtGui.QMatrix2x3 +QMatrix2x4 = PyQt5.QtGui.QMatrix2x4 +QMatrix3x2 = PyQt5.QtGui.QMatrix3x2 +QMatrix3x3 = PyQt5.QtGui.QMatrix3x3 +QMatrix3x4 = PyQt5.QtGui.QMatrix3x4 +QMatrix4x2 = PyQt5.QtGui.QMatrix4x2 +QMatrix4x3 = PyQt5.QtGui.QMatrix4x3 +QMatrix4x4 = PyQt5.QtGui.QMatrix4x4 +QMouseEvent = PyQt5.QtGui.QMouseEvent +QMoveEvent = PyQt5.QtGui.QMoveEvent +QMovie = PyQt5.QtGui.QMovie +QNativeGestureEvent = PyQt5.QtGui.QNativeGestureEvent +QOffscreenSurface = PyQt5.QtGui.QOffscreenSurface +QOpenGLBuffer = PyQt5.QtGui.QOpenGLBuffer +QOpenGLContext = PyQt5.QtGui.QOpenGLContext +QOpenGLContextGroup = PyQt5.QtGui.QOpenGLContextGroup +QOpenGLDebugLogger = PyQt5.QtGui.QOpenGLDebugLogger +QOpenGLDebugMessage = PyQt5.QtGui.QOpenGLDebugMessage +QOpenGLFramebufferObject = PyQt5.QtGui.QOpenGLFramebufferObject +QOpenGLFramebufferObjectFormat = PyQt5.QtGui.QOpenGLFramebufferObjectFormat +QOpenGLPaintDevice = PyQt5.QtGui.QOpenGLPaintDevice +QOpenGLPixelTransferOptions = PyQt5.QtGui.QOpenGLPixelTransferOptions +QOpenGLShader = PyQt5.QtGui.QOpenGLShader +QOpenGLShaderProgram = PyQt5.QtGui.QOpenGLShaderProgram +QOpenGLTexture = PyQt5.QtGui.QOpenGLTexture +QOpenGLTextureBlitter = PyQt5.QtGui.QOpenGLTextureBlitter +QOpenGLTimeMonitor = PyQt5.QtGui.QOpenGLTimeMonitor +QOpenGLTimerQuery = PyQt5.QtGui.QOpenGLTimerQuery +QOpenGLVersionProfile = PyQt5.QtGui.QOpenGLVersionProfile +QOpenGLVertexArrayObject = PyQt5.QtGui.QOpenGLVertexArrayObject +QOpenGLWindow = PyQt5.QtGui.QOpenGLWindow +QPageLayout = PyQt5.QtGui.QPageLayout +QPageSize = PyQt5.QtGui.QPageSize +QPagedPaintDevice = PyQt5.QtGui.QPagedPaintDevice +QPaintDevice = PyQt5.QtGui.QPaintDevice +QPaintDeviceWindow = PyQt5.QtGui.QPaintDeviceWindow +QPaintEngine = PyQt5.QtGui.QPaintEngine +QPaintEngineState = PyQt5.QtGui.QPaintEngineState +QPaintEvent = PyQt5.QtGui.QPaintEvent +QPainter = PyQt5.QtGui.QPainter +QPainterPath = PyQt5.QtGui.QPainterPath +QPainterPathStroker = PyQt5.QtGui.QPainterPathStroker +QPalette = PyQt5.QtGui.QPalette +QPdfWriter = PyQt5.QtGui.QPdfWriter +QPen = PyQt5.QtGui.QPen +QPicture = PyQt5.QtGui.QPicture +QPictureIO = PyQt5.QtGui.QPictureIO +QPixelFormat = PyQt5.QtGui.QPixelFormat +QPixmap = PyQt5.QtGui.QPixmap +QPixmapCache = PyQt5.QtGui.QPixmapCache +QPlatformSurfaceEvent = PyQt5.QtGui.QPlatformSurfaceEvent +QPointingDeviceUniqueId = PyQt5.QtGui.QPointingDeviceUniqueId +QPolygon = PyQt5.QtGui.QPolygon +QPolygonF = PyQt5.QtGui.QPolygonF +QQuaternion = PyQt5.QtGui.QQuaternion +QRadialGradient = PyQt5.QtGui.QRadialGradient +QRasterWindow = PyQt5.QtGui.QRasterWindow +QRawFont = PyQt5.QtGui.QRawFont +QRegExpValidator = PyQt5.QtGui.QRegExpValidator +QRegion = PyQt5.QtGui.QRegion +QRegularExpressionValidator = PyQt5.QtGui.QRegularExpressionValidator +QResizeEvent = PyQt5.QtGui.QResizeEvent +QRgba64 = PyQt5.QtGui.QRgba64 +QScreen = PyQt5.QtGui.QScreen +QScrollEvent = PyQt5.QtGui.QScrollEvent +QScrollPrepareEvent = PyQt5.QtGui.QScrollPrepareEvent +QSessionManager = PyQt5.QtGui.QSessionManager +QShortcutEvent = PyQt5.QtGui.QShortcutEvent +QShowEvent = PyQt5.QtGui.QShowEvent +QStandardItem = PyQt5.QtGui.QStandardItem +QStandardItemModel = PyQt5.QtGui.QStandardItemModel +QStaticText = PyQt5.QtGui.QStaticText +QStatusTipEvent = PyQt5.QtGui.QStatusTipEvent +QStyleHints = PyQt5.QtGui.QStyleHints +QSurface = PyQt5.QtGui.QSurface +QSurfaceFormat = PyQt5.QtGui.QSurfaceFormat +QSyntaxHighlighter = PyQt5.QtGui.QSyntaxHighlighter +QTabletEvent = PyQt5.QtGui.QTabletEvent +QTextBlock = PyQt5.QtGui.QTextBlock +QTextBlockFormat = PyQt5.QtGui.QTextBlockFormat +QTextBlockGroup = PyQt5.QtGui.QTextBlockGroup +QTextBlockUserData = PyQt5.QtGui.QTextBlockUserData +QTextCharFormat = PyQt5.QtGui.QTextCharFormat +QTextCursor = PyQt5.QtGui.QTextCursor +QTextDocument = PyQt5.QtGui.QTextDocument +QTextDocumentFragment = PyQt5.QtGui.QTextDocumentFragment +QTextDocumentWriter = PyQt5.QtGui.QTextDocumentWriter +QTextFormat = PyQt5.QtGui.QTextFormat +QTextFragment = PyQt5.QtGui.QTextFragment +QTextFrame = PyQt5.QtGui.QTextFrame +QTextFrameFormat = PyQt5.QtGui.QTextFrameFormat +QTextImageFormat = PyQt5.QtGui.QTextImageFormat +QTextInlineObject = PyQt5.QtGui.QTextInlineObject +QTextItem = PyQt5.QtGui.QTextItem +QTextLayout = PyQt5.QtGui.QTextLayout +QTextLength = PyQt5.QtGui.QTextLength +QTextLine = PyQt5.QtGui.QTextLine +QTextList = PyQt5.QtGui.QTextList +QTextListFormat = PyQt5.QtGui.QTextListFormat +QTextObject = PyQt5.QtGui.QTextObject +QTextObjectInterface = PyQt5.QtGui.QTextObjectInterface +QTextOption = PyQt5.QtGui.QTextOption +QTextTable = PyQt5.QtGui.QTextTable +QTextTableCell = PyQt5.QtGui.QTextTableCell +QTextTableCellFormat = PyQt5.QtGui.QTextTableCellFormat +QTextTableFormat = PyQt5.QtGui.QTextTableFormat +QTouchDevice = PyQt5.QtGui.QTouchDevice +QTouchEvent = PyQt5.QtGui.QTouchEvent +QTransform = PyQt5.QtGui.QTransform +QValidator = PyQt5.QtGui.QValidator +QVector2D = PyQt5.QtGui.QVector2D +QVector3D = PyQt5.QtGui.QVector3D +QVector4D = PyQt5.QtGui.QVector4D +QWhatsThisClickedEvent = PyQt5.QtGui.QWhatsThisClickedEvent +QWheelEvent = PyQt5.QtGui.QWheelEvent +QWindow = PyQt5.QtGui.QWindow +QWindowStateChangeEvent = PyQt5.QtGui.QWindowStateChangeEvent +qAlpha = PyQt5.QtGui.qAlpha +qBlue = PyQt5.QtGui.qBlue +qGray = PyQt5.QtGui.qGray +qGreen = PyQt5.QtGui.qGreen +qIsGray = PyQt5.QtGui.qIsGray +qPixelFormatAlpha = PyQt5.QtGui.qPixelFormatAlpha +qPixelFormatCmyk = PyQt5.QtGui.qPixelFormatCmyk +qPixelFormatGrayscale = PyQt5.QtGui.qPixelFormatGrayscale +qPixelFormatHsl = PyQt5.QtGui.qPixelFormatHsl +qPixelFormatHsv = PyQt5.QtGui.qPixelFormatHsv +qPixelFormatRgba = PyQt5.QtGui.qPixelFormatRgba +qPixelFormatYuv = PyQt5.QtGui.qPixelFormatYuv +qPremultiply = PyQt5.QtGui.qPremultiply +qRed = PyQt5.QtGui.qRed +qRgb = PyQt5.QtGui.qRgb +qRgba = PyQt5.QtGui.qRgba +qRgba64 = PyQt5.QtGui.qRgba64 +qUnpremultiply = PyQt5.QtGui.qUnpremultiply +qt_set_sequence_auto_mnemonic = PyQt5.QtGui.qt_set_sequence_auto_mnemonic +import PyQt5.QtWidgets +QAbstractButton = PyQt5.QtWidgets.QAbstractButton +QAbstractGraphicsShapeItem = PyQt5.QtWidgets.QAbstractGraphicsShapeItem +QAbstractItemDelegate = PyQt5.QtWidgets.QAbstractItemDelegate +QAbstractItemView = PyQt5.QtWidgets.QAbstractItemView +QAbstractScrollArea = PyQt5.QtWidgets.QAbstractScrollArea +QAbstractSlider = PyQt5.QtWidgets.QAbstractSlider +QAbstractSpinBox = PyQt5.QtWidgets.QAbstractSpinBox +QAction = PyQt5.QtWidgets.QAction +QActionGroup = PyQt5.QtWidgets.QActionGroup +QApplication = PyQt5.QtWidgets.QApplication +QBoxLayout = PyQt5.QtWidgets.QBoxLayout +QButtonGroup = PyQt5.QtWidgets.QButtonGroup +QCalendarWidget = PyQt5.QtWidgets.QCalendarWidget +QCheckBox = PyQt5.QtWidgets.QCheckBox +QColorDialog = PyQt5.QtWidgets.QColorDialog +QColumnView = PyQt5.QtWidgets.QColumnView +QComboBox = PyQt5.QtWidgets.QComboBox +QCommandLinkButton = PyQt5.QtWidgets.QCommandLinkButton +QCommonStyle = PyQt5.QtWidgets.QCommonStyle +QCompleter = PyQt5.QtWidgets.QCompleter +QDataWidgetMapper = PyQt5.QtWidgets.QDataWidgetMapper +QDateEdit = PyQt5.QtWidgets.QDateEdit +QDateTimeEdit = PyQt5.QtWidgets.QDateTimeEdit +QDesktopWidget = PyQt5.QtWidgets.QDesktopWidget +QDial = PyQt5.QtWidgets.QDial +QDialog = PyQt5.QtWidgets.QDialog +QDialogButtonBox = PyQt5.QtWidgets.QDialogButtonBox +QDirModel = PyQt5.QtWidgets.QDirModel +QDockWidget = PyQt5.QtWidgets.QDockWidget +QDoubleSpinBox = PyQt5.QtWidgets.QDoubleSpinBox +QErrorMessage = PyQt5.QtWidgets.QErrorMessage +QFileDialog = PyQt5.QtWidgets.QFileDialog +QFileIconProvider = PyQt5.QtWidgets.QFileIconProvider +QFileSystemModel = PyQt5.QtWidgets.QFileSystemModel +QFocusFrame = PyQt5.QtWidgets.QFocusFrame +QFontComboBox = PyQt5.QtWidgets.QFontComboBox +QFontDialog = PyQt5.QtWidgets.QFontDialog +QFormLayout = PyQt5.QtWidgets.QFormLayout +QFrame = PyQt5.QtWidgets.QFrame +QGesture = PyQt5.QtWidgets.QGesture +QGestureEvent = PyQt5.QtWidgets.QGestureEvent +QGestureRecognizer = PyQt5.QtWidgets.QGestureRecognizer +QGraphicsAnchor = PyQt5.QtWidgets.QGraphicsAnchor +QGraphicsAnchorLayout = PyQt5.QtWidgets.QGraphicsAnchorLayout +QGraphicsBlurEffect = PyQt5.QtWidgets.QGraphicsBlurEffect +QGraphicsColorizeEffect = PyQt5.QtWidgets.QGraphicsColorizeEffect +QGraphicsDropShadowEffect = PyQt5.QtWidgets.QGraphicsDropShadowEffect +QGraphicsEffect = PyQt5.QtWidgets.QGraphicsEffect +QGraphicsEllipseItem = PyQt5.QtWidgets.QGraphicsEllipseItem +QGraphicsGridLayout = PyQt5.QtWidgets.QGraphicsGridLayout +QGraphicsItem = PyQt5.QtWidgets.QGraphicsItem +QGraphicsItemGroup = PyQt5.QtWidgets.QGraphicsItemGroup +QGraphicsLayout = PyQt5.QtWidgets.QGraphicsLayout +QGraphicsLayoutItem = PyQt5.QtWidgets.QGraphicsLayoutItem +QGraphicsLineItem = PyQt5.QtWidgets.QGraphicsLineItem +QGraphicsLinearLayout = PyQt5.QtWidgets.QGraphicsLinearLayout +QGraphicsObject = PyQt5.QtWidgets.QGraphicsObject +QGraphicsOpacityEffect = PyQt5.QtWidgets.QGraphicsOpacityEffect +QGraphicsPathItem = PyQt5.QtWidgets.QGraphicsPathItem +QGraphicsPixmapItem = PyQt5.QtWidgets.QGraphicsPixmapItem +QGraphicsPolygonItem = PyQt5.QtWidgets.QGraphicsPolygonItem +QGraphicsProxyWidget = PyQt5.QtWidgets.QGraphicsProxyWidget +QGraphicsRectItem = PyQt5.QtWidgets.QGraphicsRectItem +QGraphicsRotation = PyQt5.QtWidgets.QGraphicsRotation +QGraphicsScale = PyQt5.QtWidgets.QGraphicsScale +QGraphicsScene = PyQt5.QtWidgets.QGraphicsScene +QGraphicsSceneContextMenuEvent = PyQt5.QtWidgets.QGraphicsSceneContextMenuEvent +QGraphicsSceneDragDropEvent = PyQt5.QtWidgets.QGraphicsSceneDragDropEvent +QGraphicsSceneEvent = PyQt5.QtWidgets.QGraphicsSceneEvent +QGraphicsSceneHelpEvent = PyQt5.QtWidgets.QGraphicsSceneHelpEvent +QGraphicsSceneHoverEvent = PyQt5.QtWidgets.QGraphicsSceneHoverEvent +QGraphicsSceneMouseEvent = PyQt5.QtWidgets.QGraphicsSceneMouseEvent +QGraphicsSceneMoveEvent = PyQt5.QtWidgets.QGraphicsSceneMoveEvent +QGraphicsSceneResizeEvent = PyQt5.QtWidgets.QGraphicsSceneResizeEvent +QGraphicsSceneWheelEvent = PyQt5.QtWidgets.QGraphicsSceneWheelEvent +QGraphicsSimpleTextItem = PyQt5.QtWidgets.QGraphicsSimpleTextItem +QGraphicsTextItem = PyQt5.QtWidgets.QGraphicsTextItem +QGraphicsTransform = PyQt5.QtWidgets.QGraphicsTransform +QGraphicsView = PyQt5.QtWidgets.QGraphicsView +QGraphicsWidget = PyQt5.QtWidgets.QGraphicsWidget +QGridLayout = PyQt5.QtWidgets.QGridLayout +QGroupBox = PyQt5.QtWidgets.QGroupBox +QHBoxLayout = PyQt5.QtWidgets.QHBoxLayout +QHeaderView = PyQt5.QtWidgets.QHeaderView +QInputDialog = PyQt5.QtWidgets.QInputDialog +QItemDelegate = PyQt5.QtWidgets.QItemDelegate +QItemEditorCreatorBase = PyQt5.QtWidgets.QItemEditorCreatorBase +QItemEditorFactory = PyQt5.QtWidgets.QItemEditorFactory +QKeyEventTransition = PyQt5.QtWidgets.QKeyEventTransition +QKeySequenceEdit = PyQt5.QtWidgets.QKeySequenceEdit +QLCDNumber = PyQt5.QtWidgets.QLCDNumber +QLabel = PyQt5.QtWidgets.QLabel +QLayout = PyQt5.QtWidgets.QLayout +QLayoutItem = PyQt5.QtWidgets.QLayoutItem +QLineEdit = PyQt5.QtWidgets.QLineEdit +QListView = PyQt5.QtWidgets.QListView +QListWidget = PyQt5.QtWidgets.QListWidget +QListWidgetItem = PyQt5.QtWidgets.QListWidgetItem +QMainWindow = PyQt5.QtWidgets.QMainWindow +QMdiArea = PyQt5.QtWidgets.QMdiArea +QMdiSubWindow = PyQt5.QtWidgets.QMdiSubWindow +QMenu = PyQt5.QtWidgets.QMenu +QMenuBar = PyQt5.QtWidgets.QMenuBar +QMessageBox = PyQt5.QtWidgets.QMessageBox +QMouseEventTransition = PyQt5.QtWidgets.QMouseEventTransition +QOpenGLWidget = PyQt5.QtWidgets.QOpenGLWidget +QPanGesture = PyQt5.QtWidgets.QPanGesture +QPinchGesture = PyQt5.QtWidgets.QPinchGesture +QPlainTextDocumentLayout = PyQt5.QtWidgets.QPlainTextDocumentLayout +QPlainTextEdit = PyQt5.QtWidgets.QPlainTextEdit +QProgressBar = PyQt5.QtWidgets.QProgressBar +QProgressDialog = PyQt5.QtWidgets.QProgressDialog +QProxyStyle = PyQt5.QtWidgets.QProxyStyle +QPushButton = PyQt5.QtWidgets.QPushButton +QRadioButton = PyQt5.QtWidgets.QRadioButton +QRubberBand = PyQt5.QtWidgets.QRubberBand +QScrollArea = PyQt5.QtWidgets.QScrollArea +QScrollBar = PyQt5.QtWidgets.QScrollBar +QScroller = PyQt5.QtWidgets.QScroller +QScrollerProperties = PyQt5.QtWidgets.QScrollerProperties +QShortcut = PyQt5.QtWidgets.QShortcut +QSizeGrip = PyQt5.QtWidgets.QSizeGrip +QSizePolicy = PyQt5.QtWidgets.QSizePolicy +QSlider = PyQt5.QtWidgets.QSlider +QSpacerItem = PyQt5.QtWidgets.QSpacerItem +QSpinBox = PyQt5.QtWidgets.QSpinBox +QSplashScreen = PyQt5.QtWidgets.QSplashScreen +QSplitter = PyQt5.QtWidgets.QSplitter +QSplitterHandle = PyQt5.QtWidgets.QSplitterHandle +QStackedLayout = PyQt5.QtWidgets.QStackedLayout +QStackedWidget = PyQt5.QtWidgets.QStackedWidget +QStatusBar = PyQt5.QtWidgets.QStatusBar +QStyle = PyQt5.QtWidgets.QStyle +QStyleFactory = PyQt5.QtWidgets.QStyleFactory +QStyleHintReturn = PyQt5.QtWidgets.QStyleHintReturn +QStyleHintReturnMask = PyQt5.QtWidgets.QStyleHintReturnMask +QStyleHintReturnVariant = PyQt5.QtWidgets.QStyleHintReturnVariant +QStyleOption = PyQt5.QtWidgets.QStyleOption +QStyleOptionButton = PyQt5.QtWidgets.QStyleOptionButton +QStyleOptionComboBox = PyQt5.QtWidgets.QStyleOptionComboBox +QStyleOptionComplex = PyQt5.QtWidgets.QStyleOptionComplex +QStyleOptionDockWidget = PyQt5.QtWidgets.QStyleOptionDockWidget +QStyleOptionFocusRect = PyQt5.QtWidgets.QStyleOptionFocusRect +QStyleOptionFrame = PyQt5.QtWidgets.QStyleOptionFrame +QStyleOptionGraphicsItem = PyQt5.QtWidgets.QStyleOptionGraphicsItem +QStyleOptionGroupBox = PyQt5.QtWidgets.QStyleOptionGroupBox +QStyleOptionHeader = PyQt5.QtWidgets.QStyleOptionHeader +QStyleOptionMenuItem = PyQt5.QtWidgets.QStyleOptionMenuItem +QStyleOptionProgressBar = PyQt5.QtWidgets.QStyleOptionProgressBar +QStyleOptionRubberBand = PyQt5.QtWidgets.QStyleOptionRubberBand +QStyleOptionSizeGrip = PyQt5.QtWidgets.QStyleOptionSizeGrip +QStyleOptionSlider = PyQt5.QtWidgets.QStyleOptionSlider +QStyleOptionSpinBox = PyQt5.QtWidgets.QStyleOptionSpinBox +QStyleOptionTab = PyQt5.QtWidgets.QStyleOptionTab +QStyleOptionTabBarBase = PyQt5.QtWidgets.QStyleOptionTabBarBase +QStyleOptionTabV4 = PyQt5.QtWidgets.QStyleOptionTabV4 +QStyleOptionTabWidgetFrame = PyQt5.QtWidgets.QStyleOptionTabWidgetFrame +QStyleOptionTitleBar = PyQt5.QtWidgets.QStyleOptionTitleBar +QStyleOptionToolBar = PyQt5.QtWidgets.QStyleOptionToolBar +QStyleOptionToolBox = PyQt5.QtWidgets.QStyleOptionToolBox +QStyleOptionToolButton = PyQt5.QtWidgets.QStyleOptionToolButton +QStyleOptionViewItem = PyQt5.QtWidgets.QStyleOptionViewItem +QStylePainter = PyQt5.QtWidgets.QStylePainter +QStyledItemDelegate = PyQt5.QtWidgets.QStyledItemDelegate +QSwipeGesture = PyQt5.QtWidgets.QSwipeGesture +QSystemTrayIcon = PyQt5.QtWidgets.QSystemTrayIcon +QTabBar = PyQt5.QtWidgets.QTabBar +QTabWidget = PyQt5.QtWidgets.QTabWidget +QTableView = PyQt5.QtWidgets.QTableView +QTableWidget = PyQt5.QtWidgets.QTableWidget +QTableWidgetItem = PyQt5.QtWidgets.QTableWidgetItem +QTableWidgetSelectionRange = PyQt5.QtWidgets.QTableWidgetSelectionRange +QTapAndHoldGesture = PyQt5.QtWidgets.QTapAndHoldGesture +QTapGesture = PyQt5.QtWidgets.QTapGesture +QTextBrowser = PyQt5.QtWidgets.QTextBrowser +QTextEdit = PyQt5.QtWidgets.QTextEdit +QTimeEdit = PyQt5.QtWidgets.QTimeEdit +QToolBar = PyQt5.QtWidgets.QToolBar +QToolBox = PyQt5.QtWidgets.QToolBox +QToolButton = PyQt5.QtWidgets.QToolButton +QToolTip = PyQt5.QtWidgets.QToolTip +QTreeView = PyQt5.QtWidgets.QTreeView +QTreeWidget = PyQt5.QtWidgets.QTreeWidget +QTreeWidgetItem = PyQt5.QtWidgets.QTreeWidgetItem +QTreeWidgetItemIterator = PyQt5.QtWidgets.QTreeWidgetItemIterator +QUndoCommand = PyQt5.QtWidgets.QUndoCommand +QUndoGroup = PyQt5.QtWidgets.QUndoGroup +QUndoStack = PyQt5.QtWidgets.QUndoStack +QUndoView = PyQt5.QtWidgets.QUndoView +QVBoxLayout = PyQt5.QtWidgets.QVBoxLayout +QWIDGETSIZE_MAX = PyQt5.QtWidgets.QWIDGETSIZE_MAX +QWhatsThis = PyQt5.QtWidgets.QWhatsThis +QWidget = PyQt5.QtWidgets.QWidget +QWidgetAction = PyQt5.QtWidgets.QWidgetAction +QWidgetItem = PyQt5.QtWidgets.QWidgetItem +QWizard = PyQt5.QtWidgets.QWizard +QWizardPage = PyQt5.QtWidgets.QWizardPage +qApp = PyQt5.QtWidgets.qApp +qDrawBorderPixmap = PyQt5.QtWidgets.qDrawBorderPixmap +qDrawPlainRect = PyQt5.QtWidgets.qDrawPlainRect +qDrawShadeLine = PyQt5.QtWidgets.qDrawShadeLine +qDrawShadePanel = PyQt5.QtWidgets.qDrawShadePanel +qDrawShadeRect = PyQt5.QtWidgets.qDrawShadeRect +qDrawWinButton = PyQt5.QtWidgets.qDrawWinButton +qDrawWinPanel = PyQt5.QtWidgets.qDrawWinPanel +import PyQt5.QtNetwork +QAbstractNetworkCache = PyQt5.QtNetwork.QAbstractNetworkCache +QAbstractSocket = PyQt5.QtNetwork.QAbstractSocket +QAuthenticator = PyQt5.QtNetwork.QAuthenticator +QDnsDomainNameRecord = PyQt5.QtNetwork.QDnsDomainNameRecord +QDnsHostAddressRecord = PyQt5.QtNetwork.QDnsHostAddressRecord +QDnsLookup = PyQt5.QtNetwork.QDnsLookup +QDnsMailExchangeRecord = PyQt5.QtNetwork.QDnsMailExchangeRecord +QDnsServiceRecord = PyQt5.QtNetwork.QDnsServiceRecord +QDnsTextRecord = PyQt5.QtNetwork.QDnsTextRecord +QHostAddress = PyQt5.QtNetwork.QHostAddress +QHostInfo = PyQt5.QtNetwork.QHostInfo +QHstsPolicy = PyQt5.QtNetwork.QHstsPolicy +QHttp2Configuration = PyQt5.QtNetwork.QHttp2Configuration +QHttpMultiPart = PyQt5.QtNetwork.QHttpMultiPart +QHttpPart = PyQt5.QtNetwork.QHttpPart +QLocalServer = PyQt5.QtNetwork.QLocalServer +QLocalSocket = PyQt5.QtNetwork.QLocalSocket +QNetworkAccessManager = PyQt5.QtNetwork.QNetworkAccessManager +QNetworkAddressEntry = PyQt5.QtNetwork.QNetworkAddressEntry +QNetworkCacheMetaData = PyQt5.QtNetwork.QNetworkCacheMetaData +QNetworkConfiguration = PyQt5.QtNetwork.QNetworkConfiguration +QNetworkConfigurationManager = PyQt5.QtNetwork.QNetworkConfigurationManager +QNetworkCookie = PyQt5.QtNetwork.QNetworkCookie +QNetworkCookieJar = PyQt5.QtNetwork.QNetworkCookieJar +QNetworkDatagram = PyQt5.QtNetwork.QNetworkDatagram +QNetworkDiskCache = PyQt5.QtNetwork.QNetworkDiskCache +QNetworkInterface = PyQt5.QtNetwork.QNetworkInterface +QNetworkProxy = PyQt5.QtNetwork.QNetworkProxy +QNetworkProxyFactory = PyQt5.QtNetwork.QNetworkProxyFactory +QNetworkProxyQuery = PyQt5.QtNetwork.QNetworkProxyQuery +QNetworkReply = PyQt5.QtNetwork.QNetworkReply +QNetworkRequest = PyQt5.QtNetwork.QNetworkRequest +QNetworkSession = PyQt5.QtNetwork.QNetworkSession +QOcspCertificateStatus = PyQt5.QtNetwork.QOcspCertificateStatus +QOcspResponse = PyQt5.QtNetwork.QOcspResponse +QOcspRevocationReason = PyQt5.QtNetwork.QOcspRevocationReason +QPasswordDigestor = PyQt5.QtNetwork.QPasswordDigestor +QSsl = PyQt5.QtNetwork.QSsl +QSslCertificate = PyQt5.QtNetwork.QSslCertificate +QSslCertificateExtension = PyQt5.QtNetwork.QSslCertificateExtension +QSslCipher = PyQt5.QtNetwork.QSslCipher +QSslConfiguration = PyQt5.QtNetwork.QSslConfiguration +QSslDiffieHellmanParameters = PyQt5.QtNetwork.QSslDiffieHellmanParameters +QSslEllipticCurve = PyQt5.QtNetwork.QSslEllipticCurve +QSslError = PyQt5.QtNetwork.QSslError +QSslKey = PyQt5.QtNetwork.QSslKey +QSslPreSharedKeyAuthenticator = PyQt5.QtNetwork.QSslPreSharedKeyAuthenticator +QSslSocket = PyQt5.QtNetwork.QSslSocket +QTcpServer = PyQt5.QtNetwork.QTcpServer +QTcpSocket = PyQt5.QtNetwork.QTcpSocket +QUdpSocket = PyQt5.QtNetwork.QUdpSocket +import PyQt5.QtSvg +QGraphicsSvgItem = PyQt5.QtSvg.QGraphicsSvgItem +QSvgGenerator = PyQt5.QtSvg.QSvgGenerator +QSvgRenderer = PyQt5.QtSvg.QSvgRenderer +QSvgWidget = PyQt5.QtSvg.QSvgWidget +import PyQt5.QtPrintSupport +QAbstractPrintDialog = PyQt5.QtPrintSupport.QAbstractPrintDialog +QPageSetupDialog = PyQt5.QtPrintSupport.QPageSetupDialog +QPrintDialog = PyQt5.QtPrintSupport.QPrintDialog +QPrintEngine = PyQt5.QtPrintSupport.QPrintEngine +QPrintPreviewDialog = PyQt5.QtPrintSupport.QPrintPreviewDialog +QPrintPreviewWidget = PyQt5.QtPrintSupport.QPrintPreviewWidget +QPrinter = PyQt5.QtPrintSupport.QPrinter +QPrinterInfo = PyQt5.QtPrintSupport.QPrinterInfo \ No newline at end of file diff --git a/src/qt/core_name_map.py b/src/qt/core_name_map.py index 83a1a448f2..10275b5d5e 100644 --- a/src/qt/core_name_map.py +++ b/src/qt/core_name_map.py @@ -605,13 +605,20 @@ name_map = {'PYQT_CONFIGURATION': 'PyQt5.QtCore', 'Q_FLAGS': 'PyQt5.QtCore', 'Q_RETURN_ARG': 'PyQt5.QtCore', 'Qt': 'PyQt5.QtCore', + 'QtCore': 'PyQt5.QtCore', 'QtCriticalMsg': 'PyQt5.QtCore', 'QtDebugMsg': 'PyQt5.QtCore', 'QtFatalMsg': 'PyQt5.QtCore', + 'QtGui': 'PyQt5.QtGui', 'QtInfoMsg': 'PyQt5.QtCore', 'QtMsgType': 'PyQt5.QtCore', + 'QtNetwork': 'PyQt5.QtNetwork', + 'QtPrintSupport': 'PyQt5.QtPrintSupport', + 'QtSvg': 'PyQt5.QtSvg', 'QtSystemMsg': 'PyQt5.QtCore', 'QtWarningMsg': 'PyQt5.QtCore', + 'QtWidgets': 'PyQt5.QtWidgets', + 'QtWin': 'PyQt5.QtWinExtras', 'bin_': 'PyQt5.QtCore', 'bom': 'PyQt5.QtCore', 'center': 'PyQt5.QtCore', @@ -705,6 +712,9 @@ name_map = {'PYQT_CONFIGURATION': 'PyQt5.QtCore', 'right': 'PyQt5.QtCore', 'scientific': 'PyQt5.QtCore', 'showbase': 'PyQt5.QtCore', + 'sip': 'PyQt5.sip', 'uppercasebase': 'PyQt5.QtCore', 'uppercasedigits': 'PyQt5.QtCore', 'ws': 'PyQt5.QtCore'} +module_names = frozenset(('QtCore', 'QtGui', 'QtWidgets', 'QtNetwork', 'QtSvg', 'QtPrintSupport', 'sip') +) diff --git a/src/qt/loader.py b/src/qt/loader.py index f25fff24dc..286625390c 100644 --- a/src/qt/loader.py +++ b/src/qt/loader.py @@ -6,7 +6,7 @@ from importlib import import_module import sys -def dynamic_load(name, name_map, already_imported, qt_modules): +def dynamic_load(name, name_map, already_imported, qt_modules, module_names=()): ans = already_imported.get(name, already_imported) if ans is not already_imported: return ans @@ -26,7 +26,10 @@ def dynamic_load(name, name_map, already_imported, qt_modules): file=sys.stderr ) if mod is not False: - q = getattr(mod, name, qt_modules) + if name in module_names: + q = mod + else: + q = getattr(mod, name, qt_modules) if q is not qt_modules: already_imported[name] = q return q diff --git a/src/qt/webengine.py b/src/qt/webengine.py index 70d956f7ea..c1bb7d2175 100644 --- a/src/qt/webengine.py +++ b/src/qt/webengine.py @@ -4,11 +4,11 @@ from .loader import dynamic_load -from .webengine_name_map import name_map +from .webengine_name_map import name_map, module_names already_imported = {} qt_modules = {} def __getattr__(name): - return dynamic_load(name, name_map, already_imported, qt_modules) + return dynamic_load(name, name_map, already_imported, qt_modules, module_names) diff --git a/src/qt/webengine.pyi b/src/qt/webengine.pyi index d557ce863c..2377fcea8e 100644 --- a/src/qt/webengine.pyi +++ b/src/qt/webengine.pyi @@ -1,35 +1,33 @@ # autogenerated by __main__.py do not edit +import PyQt5.QtWebEngine PYQT_WEBENGINE_VERSION = PyQt5.QtWebEngine.PYQT_WEBENGINE_VERSION PYQT_WEBENGINE_VERSION_STR = PyQt5.QtWebEngine.PYQT_WEBENGINE_VERSION_STR QQuickWebEngineProfile = PyQt5.QtWebEngine.QQuickWebEngineProfile QQuickWebEngineScript = PyQt5.QtWebEngine.QQuickWebEngineScript -QWebEngineCertificateError = PyQt5.QtWebEngineWidgets.QWebEngineCertificateError -QWebEngineClientCertificateSelection = PyQt5.QtWebEngineWidgets.QWebEngineClientCertificateSelection +import PyQt5.QtWebEngineCore QWebEngineClientCertificateStore = PyQt5.QtWebEngineCore.QWebEngineClientCertificateStore -QWebEngineContextMenuData = PyQt5.QtWebEngineWidgets.QWebEngineContextMenuData QWebEngineCookieStore = PyQt5.QtWebEngineCore.QWebEngineCookieStore -QWebEngineDownloadItem = PyQt5.QtWebEngineWidgets.QWebEngineDownloadItem QWebEngineFindTextResult = PyQt5.QtWebEngineCore.QWebEngineFindTextResult -QWebEngineFullScreenRequest = PyQt5.QtWebEngineWidgets.QWebEngineFullScreenRequest -QWebEngineHistory = PyQt5.QtWebEngineWidgets.QWebEngineHistory -QWebEngineHistoryItem = PyQt5.QtWebEngineWidgets.QWebEngineHistoryItem QWebEngineHttpRequest = PyQt5.QtWebEngineCore.QWebEngineHttpRequest QWebEngineNotification = PyQt5.QtWebEngineCore.QWebEngineNotification -QWebEnginePage = PyQt5.QtWebEngineWidgets.QWebEnginePage -QWebEngineProfile = PyQt5.QtWebEngineWidgets.QWebEngineProfile QWebEngineQuotaRequest = PyQt5.QtWebEngineCore.QWebEngineQuotaRequest QWebEngineRegisterProtocolHandlerRequest = PyQt5.QtWebEngineCore.QWebEngineRegisterProtocolHandlerRequest -QWebEngineScript = PyQt5.QtWebEngineWidgets.QWebEngineScript -QWebEngineScriptCollection = PyQt5.QtWebEngineWidgets.QWebEngineScriptCollection -QWebEngineSettings = PyQt5.QtWebEngineWidgets.QWebEngineSettings QWebEngineUrlRequestInfo = PyQt5.QtWebEngineCore.QWebEngineUrlRequestInfo QWebEngineUrlRequestInterceptor = PyQt5.QtWebEngineCore.QWebEngineUrlRequestInterceptor QWebEngineUrlRequestJob = PyQt5.QtWebEngineCore.QWebEngineUrlRequestJob QWebEngineUrlScheme = PyQt5.QtWebEngineCore.QWebEngineUrlScheme QWebEngineUrlSchemeHandler = PyQt5.QtWebEngineCore.QWebEngineUrlSchemeHandler -QWebEngineView = PyQt5.QtWebEngineWidgets.QWebEngineView -QtWebEngine = PyQt5.QtWebEngine.QtWebEngine -QtWebEngineCore = PyQt5.QtWebEngineCore.QtWebEngineCore -import PyQt5.QtWebEngine -import PyQt5.QtWebEngineCore -import PyQt5.QtWebEngineWidgets \ No newline at end of file +import PyQt5.QtWebEngineWidgets +QWebEngineCertificateError = PyQt5.QtWebEngineWidgets.QWebEngineCertificateError +QWebEngineClientCertificateSelection = PyQt5.QtWebEngineWidgets.QWebEngineClientCertificateSelection +QWebEngineContextMenuData = PyQt5.QtWebEngineWidgets.QWebEngineContextMenuData +QWebEngineDownloadItem = PyQt5.QtWebEngineWidgets.QWebEngineDownloadItem +QWebEngineFullScreenRequest = PyQt5.QtWebEngineWidgets.QWebEngineFullScreenRequest +QWebEngineHistory = PyQt5.QtWebEngineWidgets.QWebEngineHistory +QWebEngineHistoryItem = PyQt5.QtWebEngineWidgets.QWebEngineHistoryItem +QWebEnginePage = PyQt5.QtWebEngineWidgets.QWebEnginePage +QWebEngineProfile = PyQt5.QtWebEngineWidgets.QWebEngineProfile +QWebEngineScript = PyQt5.QtWebEngineWidgets.QWebEngineScript +QWebEngineScriptCollection = PyQt5.QtWebEngineWidgets.QWebEngineScriptCollection +QWebEngineSettings = PyQt5.QtWebEngineWidgets.QWebEngineSettings +QWebEngineView = PyQt5.QtWebEngineWidgets.QWebEngineView \ No newline at end of file diff --git a/src/qt/webengine_name_map.py b/src/qt/webengine_name_map.py index 5edac42503..699cbb81e7 100644 --- a/src/qt/webengine_name_map.py +++ b/src/qt/webengine_name_map.py @@ -29,4 +29,7 @@ name_map = {'PYQT_WEBENGINE_VERSION': 'PyQt5.QtWebEngine', 'QWebEngineUrlSchemeHandler': 'PyQt5.QtWebEngineCore', 'QWebEngineView': 'PyQt5.QtWebEngineWidgets', 'QtWebEngine': 'PyQt5.QtWebEngine', - 'QtWebEngineCore': 'PyQt5.QtWebEngineCore'} + 'QtWebEngineCore': 'PyQt5.QtWebEngineCore', + 'QtWebEngineWidgets': 'PyQt5.QtWebEngineWidgets'} +module_names = frozenset(('QtWebEngine', 'QtWebEngineCore', 'QtWebEngineWidgets') +)