1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| #!/usr/bin/python
# -*- coding: utf-8 -*-
# Python 3
import sys
from PyQt5 import (QtWidgets, QtCore, QtPrintSupport)
#############################################################################
class Fenetre(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.tedit = QtWidgets.QTextEdit(self)
# liste de liste à imprimer dans une table
L = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]]
# préparation de la construction de la table html
tabledeb = '<table border="1" align="left" width="100%" cellspacing="0" cellpadding="4">'
tablefin = '</table>'
tablelignedeb = '<tr>'
tablelignefin = '</tr>'
tablecoldeb = '<td>'
tablecolfin = '</td>'
# construction de la table html
html = tabledeb
for ligne in L:
html += tablelignedeb
for elem in ligne:
html += tablecoldeb + elem + tablecolfin
html += tablelignefin
html += tablefin
# enregistrer la table html dans le QTextEdit
self.tedit.setHtml(html)
# création du bouton pour lancer l'impression
self.bouton = QtWidgets.QPushButton("imprimer", self)
self.bouton.clicked.connect(self.imprimer)
# placement des widgets dans la fenêtre
posit = QtWidgets.QGridLayout()
posit.addWidget(self.tedit, 0, 0)
posit.addWidget(self.bouton, 1, 0)
self.setLayout(posit)
@QtCore.pyqtSlot(bool)
def imprimer(self):
printer = QtPrintSupport.QPrinter()
preview = QtPrintSupport.QPrintPreviewDialog(printer)
preview.paintRequested.connect(self.tedit_printPreview)
preview.exec_()
@QtCore.pyqtSlot("QPrinter")
def tedit_printPreview(self, printer):
self.tedit.print_(printer)
#############################################################################
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
fen = Fenetre()
fen.show()
sys.exit(app.exec_()) |
Partager