Печать вложенных HTML-таблиц в PyQt6Python

Программы на Python
Ответить
Anonymous
 Печать вложенных HTML-таблиц в PyQt6

Сообщение Anonymous »

У меня возникла проблема при попытке распечатать содержимое QTableWidget в приложении PyQt6.
Это действительно работает, но есть небольшая проблема: у меня есть таблицы, встроенные в основной table, и я бы хотел, чтобы эти таблицы полностью заполняли родительские ячейки (100 % их ширины), но дочерние таблицы не расширяются должным образом.
Это мой код:< /p>

Код: Выделить всё

import sys
from PyQt6 import QtWidgets, QtPrintSupport
from PyQt6.QtGui import QTextDocument

class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.table_widget = QtWidgets.QTableWidget()
self.button = QtWidgets.QPushButton('Print TableWidget')
self.layout = QtWidgets.QVBoxLayout(self)
self.layout.addWidget(self.table_widget)
self.layout.addWidget(self.button)
self.button.clicked.connect(self.print_table)

def print_table(self):
html_table = '''

header1header2header3

data1
data2


header1header2header3


data3data3data3




data1
data2


hr1hr2hr3hr4


d3d3d3d3


d3d3d3d3




'''

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;
vertical-align: top;
}
'''
text_doc = QTextDocument()
text_doc.setDefaultStyleSheet(style_sheet)
text_doc.setHtml(html_table)
prev_dialog = QtPrintSupport.QPrintPreviewDialog()
prev_dialog.paintRequested.connect(text_doc.print)
prev_dialog.exec()

if __name__ == '__main__':
app = QtWidgets.QApplication([])
widget = MyWidget()
widget.resize(640,480)
widget.show()
sys.exit(app.exec())
И вот что я получаю:
[img]https://i.sstatic. net/CUeTUP2r.png[/img]

Но это то, чего я хочу:
[img]https: //i.sstatic.net/JAB3Y92C.png[/img]

Я был бы признателен за любые предложения по этой проблеме, поскольку понятия не имею, как ее исправить.

Подробнее здесь: https://stackoverflow.com/questions/791 ... s-in-pyqt6
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»