PyQt6 печать таблицы
Вывожу на печать таблицу из PyQt6. Печать реализована через HTML. То есть, я форматирую таблицу в виде html документа и уже его печатаю.
Все работает, данные выводятся, но есть небольшая проблема с форматированием. Дело в том, что в ячейках таблицы вставлены другие таблицы. В идеале желательно чтобы эти таблицы занимали ячейку полностью, то есть, растягивались по размеру ячейки, но это не происходит. Суть проблемы на скриншоте:
В html использую стили, где для таблиц установлена ширина 100%. Печать реализована так:
def print_result(self):
style_sheet = '''table {border-collapse:collapse; width:100%}
th {background-color:lightblue; border: 1px solid gray; height:1em}
td {border: 1px solid gray; padding:0 1em 0 1em; vertical-align:top}
td.params {padding:0}
tr.head_inner {background-color:lightgray; font-weight:normal; text-align:center}
'''
text_doc = QTextDocument()
text_doc.setDefaultStyleSheet(style_sheet)
text_doc.setHtml(self.get_text_doc())
prev_dialog = QtPrintSupport.QPrintPreviewDialog()
prev_dialog.paintRequested.connect(text_doc.print)
prev_dialog.exec()
Здесь self.get_text_doc()
функция которая возвращает таблицу в формате html.
Что интересно, если сохранить то, что выдает эта функция в файл и открыть в браузере, то все отображается как надо, таблицы занимают ячейки полностью, то есть растягиваются. С чем связано такое поведение и можно ли это как-то исправить?
UPDATE:
Удалось получить желаемый результат указав параметр width=100%
в атрибутах тега table
для всех таблиц. Почему-то, если задать этот параметр в стилях (как я это пытался сделать) то он не работает. Видимо это особенность работы PyQt с CSS.