[英]Insert table into QTextEdit with PyQt4
我如何在要打印在A4紙上的QTextEdit內插入表格。 我寫了這段代碼,但不知道如何將其插入值中,只需插入第一個單元格即可:
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))
您需要移動QTextCursor的位置。 看看QTextCursor.movePosition和操作QTextCursor.MoveOperation 。
這應該為您完成工作:
self.cursor.movePosition(QTextCursor.NextCell)
self.cursor.insertText("second cell")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.