def save(self, fname, format, draft): if is_text_string(fname): if format == "pdf": self.app = guidata.qapplication() if draft: mode = QPrinter.ScreenResolution else: mode = QPrinter.HighResolution printer = QPrinter(mode) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOrientation(QPrinter.Landscape) printer.setOutputFileName(fname) printer.setCreator("guiqwt.pyplot") self.print_(printer) else: if self.win is None: self.show() if PYQT5: pixmap = self.win.centralWidget().grab() else: pixmap = QPixmap.grabWidget(self.win.centralWidget()) pixmap.save(fname, format.upper()) else: # Buffer fd = fname assert hasattr(fd, "write"), "object is not file-like as expected" if self.win is None: self.show() pixmap = QPixmap.grabWidget(self.win.centralWidget()) buff = QBuffer() buff.open(QIODevice.ReadWrite) pixmap.save(buff, format.upper()) fd.write(buff.data()) buff.close() fd.seek(0)
def save_widget(self, fname): """Grab widget's window and save it to filename (\*.png, \*.pdf)""" fname = str(fname) if fname.lower().endswith(".pdf"): printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOrientation(QPrinter.Landscape) printer.setOutputFileName(fname) printer.setCreator("guidata") self.print_(printer) elif fname.lower().endswith(".png"): pixmap = self.grab() pixmap.save(fname, "PNG") else: raise RuntimeError(_("Unknown file extension"))
def print_(self): printer = QPrinter(QPrinter.HighResolution) printer.setCreator("Bode example") printer.setOrientation(QPrinter.Landscape) printer.setColorMode(QPrinter.Color) docName = str(self.plot.title().text()) if not docName: docName.replace("\n", " -- ") printer.setDocName(docName) dialog = QPrintDialog(printer) if dialog.exec_(): renderer = QwtPlotRenderer() if QPrinter.GrayScale == printer.colorMode(): renderer.setDiscardFlag(QwtPlotRenderer.DiscardBackground) renderer.setDiscardFlag( QwtPlotRenderer.DiscardCanvasBackground) renderer.setDiscardFlag(QwtPlotRenderer.DiscardCanvasFrame) renderer.setLayoutFlag(QwtPlotRenderer.FrameWithScales) renderer.renderTo(self.plot, printer)