Skip to main content
 首页 » 编程设计

python之使用 PyQt4 将表格插入 QTextEdit

2025年05月04日8jyk

如何在 QTextEdit 中插入一个标签以打印在 A4 纸上。我写了这段代码,但我不知道如何将它插入到值中,只需插入第一个单元格:

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

请您参考如下方法:

也许晚了,但对其他人来说仍然有用:) 如何将表格插入 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) 

结果如下:

还有另一种方法可以做到这一点,并获得更漂亮的结果。使用 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)) 

然后您将获得样式表,如下图所示: