2222 long = int
2323
2424
25- bindings = ["PySide" , "PyQt4" ]
25+ bindings = ["PySide" , "PyQt4" , "PyQt5" ]
2626binding = None
2727
2828
2929for name in bindings :
3030 try :
3131 binding = __import__ (name )
32- if name == 'PyQt4' :
32+ if name . startswith ( 'PyQt' ) :
3333 import sip
3434 sip .setapi ('QVariant' , 2 )
3535
@@ -66,14 +66,33 @@ def _import(name):
6666QtDebugMsg = QtCore .QtDebugMsg
6767QtFatalMsg = QtCore .QtFatalMsg
6868QtWarningMsg = QtCore .QtWarningMsg
69- qInstallMsgHandler = QtCore .qInstallMsgHandler
69+ if name == "PyQt5" :
70+
71+ qInstallMsgHandler = QtCore .qInstallMessageHandler
72+
73+ else :
74+
75+ qInstallMsgHandler = QtCore .qInstallMsgHandler
7076
7177QtGui = _import ("QtGui" )
72- QApplication = QtGui .QApplication
73- QImage = QtGui .QImage
74- QPainter = QtGui .QPainter
75- QPrinter = QtGui .QPrinter
76- QRegion = QtGui .QRegion
78+ if name == "PyQt5" :
79+
80+ QtWidgets = _import ("QtWidgets" )
81+ QtPrintSupport = _import ("QtPrintSupport" )
82+
83+ QApplication = QtWidgets .QApplication
84+ QImage = QtGui .QImage
85+ QPainter = QtGui .QPainter
86+ QPrinter = QtPrintSupport .QPrinter
87+ QRegion = QtGui .QRegion
88+
89+ else :
90+
91+ QApplication = QtGui .QApplication
92+ QImage = QtGui .QImage
93+ QPainter = QtGui .QPainter
94+ QPrinter = QtGui .QPrinter
95+ QRegion = QtGui .QRegion
7796
7897QtNetwork = _import ("QtNetwork" )
7998QNetworkRequest = QtNetwork .QNetworkRequest
@@ -85,7 +104,16 @@ def _import(name):
85104QSsl = QtNetwork .QSsl
86105
87106QtWebKit = _import ('QtWebKit' )
107+ if name == "PyQt5" :
108+
109+ QtWebKitWidgets = _import ("QtWebKitWidgets" )
110+ QWebPage = QtWebKitWidgets .QWebPage
111+ QWebView = QtWebKitWidgets .QWebView
112+
113+ else :
88114
115+ QWebPage = QtWebKit .QWebPage
116+ QWebView = QtWebKit .QWebView
89117
90118default_user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 " + \
91119 "(KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2"
@@ -115,7 +143,7 @@ def __call__(self, msgType, msg):
115143 getattr (self .logger , levels [msgType ])(msg )
116144
117145
118- class GhostWebPage (QtWebKit . QWebPage ):
146+ class GhostWebPage (QWebPage ):
119147 """Overrides QtWebKit.QWebPage in order to intercept some graphical
120148 behaviours like alert(), confirm().
121149 Also intercepts client side console.log().
@@ -419,7 +447,7 @@ def __init__(
419447
420448 self .main_frame = self .page .mainFrame ()
421449
422- class GhostQWebView (QtWebKit . QWebView ):
450+ class GhostQWebView (QWebView ):
423451 def sizeHint (self ):
424452 return QSize (* viewport_size )
425453
@@ -572,7 +600,7 @@ def print_to_pdf(
572600 printer .setFullPage (True )
573601 printer .setOutputFileName (path )
574602 if self .webview is None :
575- self .webview = QtWebKit . QWebView ()
603+ self .webview = QWebView ()
576604 self .webview .setPage (self .page )
577605 self .webview .setZoomFactor (zoom_factor )
578606 self .webview .print_ (printer )
0 commit comments