文章目录
简介
PySide6中提供了丰富的文本部件,包括
| 文本部件 | 中文名 | 需求解析 |
|---|---|---|
| QLabel | 标签 | 显示一行说明文字、给输入框加标签 |
| QLineEdit | 单行编辑框 | 输入账号、密码、单行搜索词 |
| QPlainTextEdit | 多行纯文本编辑器 | 显示程序运行日志、写代码、大文本 |
| QTextEdit | 多行富文本编辑器 | 编写邮件、需要改变字体颜色/加粗 |
| QTextBrowser | 文本浏览器 | 显示帮助文档、带超链接的只读文本 |
其中标签和单行编辑框没什么好说的,下面对多行纯文本编辑器、多行富文本编辑器和文本浏览器做一个简单的示例,效果如下

设计
Label和LineEdit就不讲了,两个按钮,名称你分别是【pbTransTextEdit】和【pbTransBrowser】,用于将纯文本转换为富文本和浏览器内容。富文本框的名字是【textEdit】、文本浏览器的名字是【textBrowser】,两个纯文本框的名字分别是【pteForTextEdit】和【pteForBrowser】。
pteForTextEdit中的内容如下
xml
<h2 style="color: #2E86C1;">富文本编辑器 (QTextEdit) 演示</h2>
<p>这是一段包含 <b>加粗</b>、<i>斜体</i> 和 <u>下划线</u> 的文本。</p>
<p style="color: red;">这里使用了红色的字体,并且 <span style="background-color: yellow;">带有高亮背景</span>。</p>
<ul>
<li>无序列表项 1</li>
<li>无序列表项 2</li>
</ul>
<ol>
<li>有序列表项 1</li>
<li>有序列表项 2</li>
</ol>
pteForBrowser中内容如下
html
<h2>文本浏览器 (QTextBrowser) 演示</h2>
<p>文本浏览器的核心特点是支持 <b>超链接导航</b>。</p>
<p>
1. 外部链接:<a href="https://www.qt.io">访问 Qt 官方网站</a><br>
2. 邮件链接:<a href="mailto:test@example.com">点击发送邮件</a><br>
3. 内部锚点:<a href="#section_bottom">点击跳转到页面底部</a>
</p>
<hr>
<p style="color: gray;">(请向下滚动查看锚点目标,或者点击上方链接测试)</p>
<br><br><br><br><br><br><br><br><br><br><br><br>
<h3 id="section_bottom" style="color: green;">【锚点目标】你成功跳转到了底部!</h3>
在实际测试中,可以将二者调换,以体会富文本和文本浏览器的区别,即前者只提供文本渲染功能,后者则支持链接操作。当点击文本浏览器中的【点击跳转到页面底部】时,文本的确会调转到底部,但如果将这部分内容转换为富文本,则不会有此表现。
Python代码
Python代码如下,非常简单,只是调用了纯文本输入框的输出纯文本函数【toPlainText】,并调用富文本和文本浏览器中的【setHtml】方法。
python
from PyQt6 import uic
from PyQt6.QtWidgets import QApplication, QMainWindow
import sys
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi('TextTest.ui', self) # 加载UI文件
self.pbTransBrowser.clicked.connect(self.pbTransBrowser_click)
self.pbTransTextEdit.clicked.connect(self.pbTransTextEdit_click)
def pbTransTextEdit_click(self):
# 核心逻辑:提取纯文本 -> 渲染为富文本
html_str = self.pteForTextEdit.toPlainText()
self.textEdit.setHtml(html_str)
def pbTransBrowser_click(self):
# 核心逻辑:提取纯文本 -> 渲染为浏览器视图
html_str = self.pteForBrowser.toPlainText()
self.textBrowser.setHtml(html_str)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec())