[PyQt] Printing in PyQt

David Boddie david at boddie.org.uk
Sat Feb 21 15:05:00 GMT 2015


On Fri, 20 Feb 2015 11:31:10 -0800 (PST), primalcharlie wrote:

> Hi Im hoping to print a whole screen and as a separate print a widget:
> However I have no clue as to how to do it. I know that I need to do a paint
> and paint to the printer and get the details using a QPrintDialog however
> past that point my knowledge is limited. I found the following on the
> internet in the pyqt docs but it isn't working

Can you give a bit more details about how it fails to produce what you
expect?

> def printViewCustomer(self):
>         printer=QtPrintSupport.QPrinter()
>         dialog=QtPrintSupport.QPrintDialog(printer,self)
>         if (dialog.exec_()!=QtWidgets.QDialog.Accepted):
>             return
>         printWidget=self.mainViewWidget
>         painter=QtGui.QPainter(printer)
>         painter.begin(printer)
>         print(printer.paperRect().x())
>         XScale=(printer.pageRect().width()/ (printWidget.width()))
>         YScale=(printer.pageRect().height()/(printWidget.height()))
>         Scale=(min(XScale,YScale))
>         painter.translate((printer.paperRect().x()) +
> (printer.pageRect().width()/2),(printer.paperRect().y) +
> (printer.pageRect().height()/2))
>         painter.scale(Scale,Scale)
>        
> painter.translate(-1*printWidget.width()/2,-1*printWidget.height()/2)
>         printWidget.render(painter)
>         painter.end()

Have you seen the examples provided with PyQt5? There should be ones that
cover printing.

David


More information about the PyQt mailing list