class Popup(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) #self.centralwidget = QtGui.QWidget #self.verticalLayout_4 = QtGui.QVBoxLayout(self.centralwidget) self.QWebView = QWebView(self) self.QWebView.resize(350,400) self.resize(350, 400)
class PreviewTooltip(QWidget): def __init__(self, url): QWidget.__init__(self, None, Qt.ToolTip) self.url = url self.font = QFont(QApplication.font(self)) self.font.setPointSize(8) desktop = QApplication.desktop().availableGeometry(self) cursor = QCursor.pos() rect = QRect(cursor + QPoint(-10, 10), QSize(240,180 + QFontMetrics(self.font).height())) if rect.left() < desktop.left(): rect.moveLeft(desktop.left()) if rect.right() > desktop.right(): rect.moveRight(cursor.x() - 10) if rect.bottom() > desktop.bottom(): rect.moveBottom(cursor.y() - 10) self.setGeometry(rect) self.pixmap = None self.progress = 0 self.title = unicode(self.url) self.webView = QWebView() self.webView.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.resize(1024,768) self.webView.load(QUrl(url)) self.timer = QTimer(self) self.connect(self.timer, SIGNAL("timeout()"), self.refresh) self.timer.start(3000) self.connect(self.webView, SIGNAL("loadFinished(bool)"), self.refresh) self.connect(self.webView, SIGNAL("loadProgress(int)"), self.updateProgress) self.connect(self.webView, SIGNAL("urlChanged(const QUrl&)"), self.newUrl) self.connect(self.webView, SIGNAL("titleChanged(const QString&)"), self.newTitle) def updateProgress(self, progress): self.progress = progress self.update() def newUrl(self, url): self.title = unicode(url.toString()) self.update() def newTitle(self, title): self.title = unicode(title) self.update() def refresh(self): view = QPixmap(self.webView.size()) self.webView.render(view) self.pixmap = view.scaled(QSize(240,180), Qt.IgnoreAspectRatio, Qt.SmoothTransformation) self.update() def paintEvent(self, event): QWidget.paintEvent(self, event) p = QPainter(self) p.setFont(self.font) if self.pixmap: p.drawPixmap(QPoint(0,0), self.pixmap) r = QRect(self.rect().topLeft() + QPoint(0, 180), QSize(self.rect().size().width(), p.fontMetrics().height())) p.fillRect(r, self.palette().midlight()) if self.progress: pr = QRect(r) pr.setWidth( (r.width() * self.progress) / 100 ) p.fillRect(pr, self.palette().dark()) p.setBrush(Qt.NoBrush) p.setPen(QPen(self.palette().text(), 1)) p.drawText(QRectF(r), self.title, QTextOption(Qt.AlignHCenter)) p.setPen(QPen(self.palette().shadow(), 1)) p.drawRect(self.rect().adjusted(0,0,-1,-1))
<h2><a href="#" onclick="alert('Javascript works!')">JS test</a></h2> </body> </html> """ class RecoveryPlan(QObject): def __init__(self, parent=None): super(RecoveryPlan, self).__init__(parent) @pyqtSlot(str) def text(self, message): print(message) if __name__ == '__main__': app = QApplication(sys.argv) view = QWebView() frame = view.page().mainFrame() printer = RecoveryPlan() view.setWindowTitle("RecoveryPlan") view.resize(600, 600) # view.setHtml(html) # view.load(QUrl("http://jquerymobile.com/test/")); view.load(QUrl("login.html")); frame.addToJavaScriptWindowObject('printer', printer) # frame.evaluateJavaScript("alert('Hello');") frame.evaluateJavaScript("printer.text('Goooooooooo!');") view.show() app.exec_()