3 pièce(s) jointe(s)
PyQt Disposition des éléments dans un QTextDocument
Bonjour,
j'aurais besoin d'aide pour un truc qui peut paraitre tout simple mais qui me fait bugger depuis un moment.
Je veux construire un QTextDocument qui servira à être imprimé.
Mon code donne:
Code:
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
| class PrintSuiviFP(QPrintPreviewDialog):
def __init__(self, parent, grid1, grid2, grid3, grid4, df1, df2, mois, annee):
super().__init__()
self.parent = parent
self.grid1 = grid1
self.grid2 = grid2
self.grid3 = grid3
self.grid4 = grid4
self.mois = mois
self.annee = annee
self.df1 = df1
self.df2 = df2
self.dialog = QPrintPreviewDialog()
self.document = QTextDocument()
self.cursor = QTextCursor(self.document)
self.block_format = self.cursor.blockFormat()
def preview(self):
self.dialog.setModal(True)
self.dialog.paintRequested.connect(self._handle_paint_request)
self.dialog.showMaximized()
self.dialog.exec()
def _handle_paint_request(self, printer):
self.document.setDefaultFont(QFont('Calibri', 11))
self.block_format.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.cursor.setBlockFormat(self.block_format)
header_text = "TITRE"
self.cursor.insertBlock()
self.cursor.insertText(header_text, self._format_header())
self.cursor.insertBlock()
self.cursor.insertText(' ', self._format_header())
self.cursor.insertBlock()
self._build_left_block() # construction de la partie gauche de mon QTextDocument
self._build_right_block() # construction de la partie droite de mon QTextDocument
printer.setPageOrientation(QPageLayout.Orientation.Landscape)
self.document.setPageSize(QSizeF(1210, 800))
self.document.setDocumentMargin(1)
self.document.print(printer) |
Je vous passe le reste de la classe qui n'est pas utile ici et qui fonctionne bien.
Je n'arrive pas à obtenir la disposition que je souhaite.
Tel quel j'obtiens une disposition du type:
Pièce jointe 603860
Si dans mon code j'insère un self.cursor.insertblock() entre les deux lignes self._build_left_block() et self._build_right_block(), j'obtiens la disposition:
Pièce jointe 603861
Or ce que je veux obtenir c'est la disposition suivante:
Pièce jointe 603862
Bref vous l'aurez compris je cherche à mettre les deux blocks côte-à-côte et non pas dessus-dessous.
Quelqu'un saurait-il comment je dois m'y prendre ou ce qu'il me manque pour arriver à ce que je souhaite?
Je n'arrive pas à trouver mon bonheur dans mes recherches sur le net.