def printpage(self, preview=False, count: {'special': 'count'}=None): """Print the current/[count]th tab. Args: preview: Show preview instead of printing. count: The tab index to print, or None. """ if not qtutils.check_print_compat(): # WORKAROUND (remove this when we bump the requirements to 5.3.0) raise cmdexc.CommandError( "Printing on Qt < 5.3.0 on Windows is broken, please upgrade!") tab = self._cntwidget(count) if tab is not None: if preview: diag = QPrintPreviewDialog() diag.setAttribute(Qt.WA_DeleteOnClose) diag.setWindowFlags(diag.windowFlags() | Qt.WindowMaximizeButtonHint | Qt.WindowMinimizeButtonHint) diag.paintRequested.connect(tab.print) diag.exec_() else: diag = QPrintDialog() diag.setAttribute(Qt.WA_DeleteOnClose) diag.open(lambda: tab.print(diag.printer()))
def printpage(self, preview=False, count: {'special': 'count'} = None): """Print the current/[count]th tab. Args: preview: Show preview instead of printing. count: The tab index to print, or None. """ if not qtutils.check_print_compat(): # WORKAROUND (remove this when we bump the requirements to 5.3.0) raise cmdexc.CommandError( "Printing on Qt < 5.3.0 on Windows is broken, please upgrade!") tab = self._cntwidget(count) if tab is not None: if preview: diag = QPrintPreviewDialog() diag.setAttribute(Qt.WA_DeleteOnClose) diag.setWindowFlags(diag.windowFlags() | Qt.WindowMaximizeButtonHint | Qt.WindowMinimizeButtonHint) diag.paintRequested.connect(tab.print) diag.exec_() else: diag = QPrintDialog() diag.setAttribute(Qt.WA_DeleteOnClose) diag.open(lambda: tab.print(diag.printer()))
class HtmlView(QWebEngineView): """Subclass QWebView and connect to a QPrintPreviewDialog object""" def __init__(self, parent=None, url = ""): """ Constructor of HtmlView :param parent: parent of the view :param url: url to load, if set, a loadFInished signal is emitted """ super().__init__(parent) self.html = "" self.setUrl(QUrl(url)) """Open QPrintPreviewDialog dialog window""" self.preview = QPrintPreviewDialog() # just for the moment / buf in Qt leads to incorrect printing of tables fomr QWebKit self.preview.printer().setOutputFormat(QPrinter.PdfFormat) self.preview.printer().setPaperSize(QPrinter.A4) self.textedit = QTextEdit() self.preview.paintRequested.connect(self.printPreview) if url != "": self.loadFinished.connect(self.execpreview) def execpreview(self, arg): self.preview.exec() def printPreview(self, printer): self.textedit.print(printer) def setHtml_(self, html): self.setHtml(html) self.textedit.setHtml(html) # small workaround to find the QPrintPreviewWidget inside the pre-defined dialog and force it to update its content wdg = self.preview.findChild(PyQt5.QtPrintSupport.QPrintPreviewWidget) if wdg is not None: wdg.updatePreview()
class HtmlView(QWebEngineView): """Subclass QWebView and connect to a QPrintPreviewDialog object""" def __init__(self, parent=None, url=""): """ Constructor of HtmlView :param parent: parent of the view :param url: url to load, if set, a loadFInished signal is emitted """ super().__init__(parent) self.html = "" self.setUrl(QUrl(url)) """Open QPrintPreviewDialog dialog window""" self.preview = QPrintPreviewDialog() # just for the moment / buf in Qt leads to incorrect printing of tables fomr QWebKit self.preview.printer().setOutputFormat(QPrinter.PdfFormat) self.preview.printer().setPaperSize(QPrinter.A4) self.textedit = QTextEdit() self.preview.paintRequested.connect(self.printPreview) if url != "": self.loadFinished.connect(self.execpreview) def execpreview(self, arg): self.preview.exec() def printPreview(self, printer): self.textedit.print(printer) def setHtml_(self, html): self.setHtml(html) self.textedit.setHtml(html) # small workaround to find the QPrintPreviewWidget inside the pre-defined dialog and force it to update its content wdg = self.preview.findChild(PyQt5.QtPrintSupport.QPrintPreviewWidget) if wdg is not None: wdg.updatePreview()