PrintPreview: Print preview dialog

This module implements a print preview dialog.

The dialog provides methods to send images, pixmaps and SVG items to the page to be printed.

The user can interactively move and resize the items.


class PrintPreviewDialog(parent=None, printer=None)[source]

Bases: PyQt5.QtWidgets.QDialog

Print preview dialog widget.

addImage(image, title=None, comment=None, commentPosition=None)[source]

Add an image to the print preview scene.

  • image (QImage) – Image to be added to the scene
  • title (str) – Title shown above (centered) the image
  • comment (str) – Comment displayed below the image
  • commentPosition – “CENTER” or “LEFT”
addPixmap(pixmap, title=None, comment=None, commentPosition=None)[source]

Add a pixmap to the print preview scene

  • pixmap (QPixmap) – Pixmap to be added to the scene
  • title (str) – Title shown above (centered) the pixmap
  • comment (str) – Comment displayed below the pixmap
  • commentPosition – “CENTER” or “LEFT”
addSvgItem(item, title=None, comment=None, commentPosition=None, viewBox=None, keepRatio=True)[source]

Add a SVG item to the scene.

  • item (QSvgRenderer) – SVG item to be added to the scene.
  • title (str) – Title shown above (centered) the SVG item.
  • comment (str) – Comment displayed below the SVG item.
  • commentPosition (str) – “CENTER” or “LEFT”
  • viewBox (QRectF) – Bounding box for the item on the print page (xOffset, yOffset, width, height). If None, use original item size.
  • keepRatio (bool) – If True, resizing the item will preserve its original aspect ratio.

Open a print dialog to ensure the printer is set.

If the setting fails or is cancelled, printer is reset to None.


If the printer is not already set, try to interactively setup the printer using a QPrintDialog. In case of failure, hide widget and log a warning.

Returns:True if printer was set. False if it failed or if the selection dialog was canceled.

Set output filename.

Setting a non-empty name enables printing to file.

Parameters:name (str) – File name (path)
exec(self) → int[source]
exec_(self) → int[source]
class SingletonPrintPreviewDialog(parent=None, printer=None)[source]

Bases: silx.gui.widgets.PrintPreview.PrintPreviewDialog

Singleton print preview dialog.

All widgets in a program that instantiate this class will share a single print preview dialog. This enables sending multiple images to a single page to be printed.


import sys
from silx.gui import qt
from silx.gui.widgets import PrintPreviewDialog

a = qt.QApplication(sys.argv)

if len(sys.argv) < 2:
    print("give an image file as parameter please.")

if len(sys.argv) > 2:
    print("only one parameter please.")

filename = sys.argv[1]
w = PrintPreviewDialog()
w.resize(400, 500)

comment = ""
for i in range(20):
    comment += "Line number %d: En un lugar de La Mancha de cuyo nombre ...\n"

if filename[-3:] == "svg":
    item = qt.QSvgRenderer(filename,
    w.addSvgItem(item, title=filename,
                 comment=comment, commentPosition="CENTER")
    w.addImage(qt.QImage(filename), comment=comment, commentPosition="LEFT")