Вставить таблицу в QTextEdit с помощью PyQt4 - PullRequest
2 голосов
/ 27 ноября 2011

Как вставить табель в QTextEdit для печати на бумаге формата А4.Я написал этот код, но я не знаю, как я могу вставить его в значение, просто вставьте первую ячейку:

self.text = QtGui.QTextEdit()
self.cursor = QtGui.QTextCursor()
self.cursor = self.text.textCursor()
self.cursor.insertTable(2, 5)
self.cursor.insertText("first cell ")

Ответы [ 2 ]

0 голосов
/ 05 декабря 2017

Может быть поздно, но все же может быть полезно для кого-то еще :) Есть два хороших варианта, как вставить таблицу в QTextEdit.

Первый, как упомянуто выше, с помощью курсора.Пример:

headers = ["Number", "Name", "Surname"]
rows = [["1", "Maik", "Mustermann"],
        ["2", "Tom", "Jerry"],
        ["3", "Jonny", "Brown"]]
cursor = results_text.textCursor()
cursor.insertTable(len(rows) + 1, len(headers))
for header in headers:
    cursor.insertText(header)
    cursor.movePosition(QTextCursor.NextCell)
for row in rows:
    for value in row:
        cursor.insertText(str(value))
        cursor.movePosition(QTextCursor.NextCell)

Результат выглядит следующим образом: enter image description here

Существует также другой способ сделать это и получить более красивый результат.Используйте пакет jinja2, как в примере:

headers = ["Number", "Name", "Surname"]
rows = [["1", "Maik", "Mustermann"],
        ["2", "Tom", "Jerry"],
        ["3", "Jonny", "Brown"]]

from jinja2 import Template
table = """
<style>
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: center;
    padding: 8px;
}
</style>

<table border="1" width="100%">
    <tr>{% for header in headers %}<th>{{header}}</th>{% endfor %}</tr>
    {% for row in rows %}<tr>
        {% for element in row %}<td>
            {{element}}
        </td>{% endfor %}
    </tr>{% endfor %}
</table>
"""
results_text.setText(Template(table).render(headers=headers, rows=rows))

Затем вы получите таблицу в стиле, как на следующем рисунке: enter image description here

0 голосов
/ 28 ноября 2011

Вам необходимо переместить позицию QTextCursor. Взгляните на QTextCursor.movePosition и операции в QTextCursor.MoveOperation .

Это должно сделать работу за вас:

self.cursor.movePosition(QTextCursor.NextCell)
self.cursor.insertText("second cell")
...