def render_html(path_to_html, width=590, height=750, as_xhtml=True): from PyQt5.QtWebKitWidgets import QWebPage from PyQt5.Qt import QEventLoop, QPalette, Qt, QUrl, QSize from calibre.gui2 import is_ok_to_use_qt, secure_web_page if not is_ok_to_use_qt(): return None path_to_html = os.path.abspath(path_to_html) with CurrentDir(os.path.dirname(path_to_html)): page = QWebPage() settings = page.settings() secure_web_page(settings) pal = page.palette() pal.setBrush(QPalette.Background, Qt.white) page.setPalette(pal) page.setViewportSize(QSize(width, height)) page.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) loop = QEventLoop() renderer = HTMLRenderer(page, loop) page.loadFinished.connect(renderer, type=Qt.QueuedConnection) if as_xhtml: page.mainFrame().setContent(open(path_to_html, 'rb').read(), 'application/xhtml+xml', QUrl.fromLocalFile(path_to_html)) else: page.mainFrame().load(QUrl.fromLocalFile(path_to_html)) loop.exec_() renderer.loop = renderer.page = None page.loadFinished.disconnect() del page del loop if isinstance(renderer.exception, ParserError) and as_xhtml: return render_html(path_to_html, width=width, height=height, as_xhtml=False) return renderer
def test02_check_scene1_webpage(self): """render exported web page and check page capture""" html_path = outputPath("scene1.html") url = QUrl.fromLocalFile(html_path) url = QUrl(url.toString() + "#cx=-20&cy=16&cz=-34&tx=-2&ty=0&tz=8") loop = QEventLoop() page = QWebPage() page.setViewportSize(QSize(OUT_WIDTH, OUT_HEIGHT)) page.loadFinished.connect(loop.quit) page.mainFrame().setUrl(url) loop.exec_() page.mainFrame().evaluateJavaScript('document.getElementById("progress").style.display = "none";') timer = QTimer() timer.timeout.connect(loop.quit) timer.start(100) while page.mainFrame().evaluateJavaScript("app.loadingManager.isLoading"): loop.exec_() timer.stop() image = QImage(OUT_WIDTH, OUT_HEIGHT, QImage.Format_ARGB32_Premultiplied) painter = QPainter(image) page.mainFrame().render(painter) painter.end() filename = "scene1_qwebpage.png" image.save(outputPath(filename)) assert QImage(outputPath(filename)) == QImage(expectedDataPath(filename)), "captured image is different from expected."
def __init__(self, parent, size, url): super(GISCloudQgisWebBrowserDialog, self).__init__(parent.manager.main_widget) self.parent = parent self.setModal(True) self.cookies = None self.url = QUrl(url) self.nam = QtNetwork.QNetworkAccessManager() self.web_page = QWebPage() self.web_page.setNetworkAccessManager(self.nam) self.web_page.loadFinished.connect(self.loading_finished) def customuseragent(url): """setting up our own user agent""" # pylint: disable=W0613 return ("Mozilla/5.0 " + GISCloudNetworkHandler.app_id.encode( "unicode_escape").decode("latin-1")) self.web_page.userAgentForUrl = customuseragent self.web_view = QWebView(self) self.web_view.setPage(self.web_page) self.resize(size)
def __init__(self, callback, xpos, ypos, width, height): super(Window, self).__init__() self._xpos = xpos self._ypos = ypos self._width = width self._height = height self._callback = callback self.setStyleSheet( "QWidget { background-color : #1B1D1E; color : #FFFFFF; }") self.setAsBar() view = QWebView(self) view.setContextMenuPolicy(Qt.CustomContextMenu) view.statusBarMessage.connect(self.qt_statusbar_callback) layout = QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(view) view.setPage(QWebPage()) view.setHtml( htmltemplate(self._width, self._height, "bottom" if ypos == 0 else "top")) self.view = view self.updateContent.connect(self.handle_updateContent)
def __init__(self, player, playlist, trackInfoList, *args, **kwargs): QWidget.__init__(self, *args, **kwargs) view = QWebView(self) view.resize(800, 600) #для перехвата post page = QWebPage() self.qplayer = QPLAYER_COMMAND(player, playlist, trackInfoList) page.mainFrame().addToJavaScriptWindowObject("qplayer", self.qplayer) page.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True) view.setPage(page) with open(URL + "index.html", "rb") as f: template = Template(f.read().decode("utf8")) template_compos = "" #генерируем список воспроизведения for name in trackInfoList: template_compos += """ <div class="composition" onclick="select_music(%s, this)" valued="%s"> <div class="picture" > <div class="picture-play"> <div class="picture-play-span"> <span class="glyphicon glyphicon-play"></span> </div> </div> </div> <div class="composition_text">%s</div> </div>""" % (str(name[1] - 1), str(name[1] - 1), "<span class='number'>" + str(name[1]) + "</span> " + name[0]) view.setHtml(template.render(URL=URL, COMPOS=template_compos), QUrl("file:///" + URL)) self.setWindowTitle('VK Player') self.setWindowIcon( QIcon(os.path.dirname(os.path.abspath(__file__)) + "./icon.png"))
def __init__(self, parent=None): """ Constructor @param parent reference to the parent object (QObject) """ super(PageThumbnailer, self).__init__(parent) self.__page = QWebPage(self) self.__size = QSize(231, 130) self.__loadTitle = False self.__title = "" self.__url = QUrl() self.__proxy = NetworkAccessManagerProxy(self) import Helpviewer.HelpWindow self.__proxy.setPrimaryNetworkAccessManager( Helpviewer.HelpWindow.HelpWindow.networkAccessManager()) self.__page.setNetworkAccessManager(self.__proxy) self.__page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.__page.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) # Full HD # Every page should fit in this resolution self.__page.setViewportSize(QSize(1920, 1080))
def createWindow(self, QWebEnginePage_WebWindowType): new_webview = QWebView() page = QWebPage() new_webview.setPage(page) win = MainWin() win.setCentralWidget(new_webview) self.windowList.append(win) # 注:没有这句会崩溃!!! return new_webview
def webpage(qnam): """Get a new QWebPage object.""" from PyQt5.QtWebKitWidgets import QWebPage page = QWebPage() page.networkAccessManager().deleteLater() page.setNetworkAccessManager(qnam) return page
def __init__(self): self.network_manager = QNetworkAccessManager() self.network_manager.createRequest = self._create_request self.network_manager.finished.connect(self._request_finished) self.web_page = QWebPage() self.web_page.setNetworkAccessManager(self.network_manager) self.web_view = QWebView() self.web_view.setPage(self.web_page)
def __init__(self): super(FrameCapture, self).__init__() self._percent = 0 self._page = QWebPage() self._page.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self._page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self._page.loadProgress.connect(self.printProgress) self._page.loadFinished.connect(self.saveResult)
def __init__(self, html, base_dir, width, height, dpi, factor): ''' `width, height`: page width and height in pixels `base_dir`: The directory in which the HTML file that contains the table resides ''' QObject.__init__(self) self.app = None self.width, self.height, self.dpi = width, height, dpi self.base_dir = base_dir self.images = [] self.tdir = tempfile.mkdtemp(prefix='calibre_render_table') self.loop = QEventLoop() self.page = QWebPage() self.page.loadFinished.connect(self.render_html) self.page.mainFrame().setTextSizeMultiplier(factor) self.page.mainFrame().setHtml( html, QUrl('file:' + os.path.abspath(self.base_dir)))
def init_widgets(self): self.w.main_tab_widget.setCurrentIndex(0) self.w.slider_jog_linear.setMaximum(INFO.MAX_LINEAR_JOG_VEL) self.w.slider_jog_linear.setValue(INFO.DEFAULT_LINEAR_JOG_VEL) self.w.slider_jog_angular.setMaximum(INFO.MAX_ANGULAR_JOG_VEL) self.w.slider_jog_angular.setValue(INFO.DEFAULT_ANGULAR_JOG_VEL) self.w.slider_feed_ovr.setMaximum(INFO.MAX_FEED_OVERRIDE) self.w.slider_feed_ovr.setValue(100) self.w.slider_spindle_ovr.setMinimum(INFO.MIN_SPINDLE_OVERRIDE) self.w.slider_spindle_ovr.setMaximum(INFO.MAX_SPINDLE_OVERRIDE) self.w.slider_spindle_ovr.setValue(100) self.w.chk_override_limits.setChecked(False) self.w.chk_override_limits.setEnabled(False) self.w.lbl_maxv_percent.setText("100 %") self.w.lbl_max_rapid.setText(str(self.max_linear_velocity)) self.w.lbl_home_x.setText( INFO.get_error_safe_setting('JOINT_0', 'HOME', "50")) self.w.lbl_home_y.setText( INFO.get_error_safe_setting('JOINT_1', 'HOME', "50")) self.w.cmb_gcode_history.addItem("No File Loaded") self.w.cmb_gcode_history.wheelEvent = lambda event: None self.w.jogincrements_linear.wheelEvent = lambda event: None self.w.jogincrements_angular.wheelEvent = lambda event: None self.w.gcode_editor.hide() self.w.filemanager.table.setShowGrid(False) self.w.filemanager_usb.table.setShowGrid(False) self.w.tooloffsetview.setShowGrid(False) self.w.offset_table.setShowGrid(False) self.w.divider_line.hide() # move clock to statusbar self.w.statusbar.addPermanentWidget(self.w.lbl_clock) #set up gcode list self.gcodes.setup_list() # set up web page viewer self.web_view = QWebView() self.web_page = QWebPage() self.web_page.setLinkDelegationPolicy(QWebPage.DelegateAllLinks) self.web_view.setPage(self.web_page) self.w.layout_setup.addWidget(self.web_view) # set up spindle gauge self.w.gauge_spindle.set_max_value(self.max_spindle_rpm) self.w.gauge_spindle.set_max_reading(self.max_spindle_rpm / 1000) self.w.gauge_spindle.set_threshold(self.min_spindle_rpm) self.w.gauge_spindle.set_label("RPM")
def _init_user_agent(): global parsed_user_agent ua = QWebPage().userAgentForUrl(QUrl()) parsed_user_agent = websettings.UserAgent.parse(ua)
def createWindow(self, webWindowType): self.popup = QWebPage() return self.popup
html = '''<html> <head> <title>Plotly Example</title> <script src="https://cdn.plot.ly/plotly-latest.min.js"></script> </head> <body> %(plot_content)s </body> </html>''' if __name__ == '__main__': import sys app = QApplication(sys.argv) page = QWebPage() pScene = QGraphicsScene() pView = QGraphicsView(pScene) pView.setFrameShape(QFrame.NoFrame) pView.setViewport(QGLWidget()) pWebview = QGraphicsWebView() pWebview.setPage(page) pWebview.setResizesToContents(True) plot_content = plots.plot3d() pWebview.setHtml(html % {'plot_content': plot_content}) pScene.addItem(pWebview) pScene.setSceneRect(0, 0, 900, 700)
def __init__(self, webview, *args, **kwargs): super(MMyWebPage, self).__init__(*args, **kwargs) self.webview = webview self.webpage = QWebPage() self.webpage.loadFinished.connect(self.on_loadFinished)