【PyQt5】从零开始的PyQt5 - QTextEdit 篇
从零开始的PyQt5 - QTextEdit 篇
- 引言
- 一、简述
- 二、例程
- 2.1 显示文本
- 2.2 使用append追加,并且控制行数
- 2.3 显示表格
- 三、参考
引言
QTextEdit 是 Qt 框架中用于显示和编辑富文本(如 HTML、表格、图像等)和纯文本的控件。它继承自 QAbstractScrollArea,提供滚动功能,并支持复杂的文本格式、光标操作、撤销/重做等功能。本文主要简述PyQt5中的QTextEdit以及展示常用例程。
一、简述
-
- QTextEdit被用来做显示的窗口,一般用来显示日志
使用setHtml()设置文本,该方法清空现有内容。使用QTextCursor类或使用函数insertHtml()、insertPlainText()、append()或paste()插入。
避免占用大量内存,可以使用QTextDocument的maximumBlockCount属性来实现段落总数的控制。如果只显示很少的文本,可使用QLabel
。
- QTextEdit被用来做显示的窗口,一般用来显示日志
-
- QTextEdit被用来做文本编辑器
文本的选择由QTextCursor类处理,该类提供创建选择、检索文本内容或删除选择的功能。可以使用textCursor()方法检索与用户可见光标对应的对象。
QTextEdit包含一个QTextDocument对象,可以使用document()方法检索该对象。还可以使用setDocument()设置自己的文档对象。
- QTextEdit被用来做文本编辑器
二、例程
2.1 显示文本
-
效果展示
-
源码
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit
from PyQt5.QtCore import Qtclass ExampleApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):text_edit = QTextEdit(self) # 创建一个QTextEdit,添加到此窗口中 (父窗口设置为此窗口)text_edit.setHtml("<b>Hello</b> <font color='red'>World</font>") # 设置内容text_edit.setAlignment(Qt.AlignCenter) # 居中text_edit.resize(300, 100) # 设置大小self.setGeometry(300, 300, 300, 100) # 设置窗口的布局self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = ExampleApp()sys.exit(app.exec_())
2.2 使用append追加,并且控制行数
-
效果展示 (增加
text_edit.document().setMaximumBlockCount(10)
,限制为10)
需要注意10指的是段落不是展示的行数,由于宽度,一段可能有多行)
-
源码
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit
from PyQt5.QtCore import Qtclass ExampleApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):text_edit = QTextEdit(self) # 创建一个QTextEdit,添加到此窗口中 (父窗口设置为此窗口)text_edit.document().setMaximumBlockCount(10) # 限制for i in range(15):text_edit.append(f"这是第 {i + 1} 行内容")text_edit.resize(300, 300) # 设置大小self.setGeometry(300, 300, 300, 300) # 设置窗口的布局self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = ExampleApp()sys.exit(app.exec_())
2.3 显示表格
-
效果展示
-
源码
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit
from PyQt5.QtGui import QTextCharFormat, QFontclass ExampleApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):text_edit = QTextEdit(self) # 创建一个QTextEdit,添加到此窗口中 (父窗口设置为此窗口)text_edit.setHtml("""<style>table {border-collapse: collapse;width: 100%;}th, td {border: 1px solid black;padding: 8px;text-align: left;}th {background-color: #f2f2f2;}</style><table><tr><th>Name</th><th>Age</th></tr><tr><td>Alice</td><td>25</td></tr></table>""")text_edit.resize(300, 100) # 设置大小self.setGeometry(300, 300, 300, 100) # 设置窗口的布局self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = ExampleApp()sys.exit(app.exec_())
三、参考
【pyqt5】比较多的文字插入QTextEdit造成崩溃的问题:https://blog.csdn.net/qq_45236230/article/details/105592423
QTextEdit 设置上限行数,超过上限行数自动删除行:https://blog.csdn.net/Blasit/article/details/137770281
QTextEdit设置显示的最大行数:https://blog.csdn.net/qq_44365088/article/details/118148218