pyqt5-QPlainTextEdit与文本详解
1、纯文本
setPlainText(self, text: str)
- 直接设置普通文本,不显示任何样式
- 是组件整体进行设值
appendPlainText(self, text: str)
- 拼接纯文本
- 如果拼接前的组件中已经输出文本,会换行再输出纯文本。如果未输出,则直接在首行输出纯文本
insertPlainText(self, text: str)
- 在光标处插入纯文本。即使不聚焦组件,光标仍然存在,一般是在末尾处
- 不会进行换行操作
2、html
QPlainTextEdit组件写入html的方法只有一个,即appendHtml方法
- 作用是添加html代码的文本,进行一定的样式显示,区别于appendPlainText只添加普通文本
- 需要注意该方法对任意标签,无论该标签是否是合法html标签,是否开始标签和结束标签为同一标签名,是否为显示样式,都不会在组件中输出其开始标签和结束标签部分,而开始标签和结束标签之间的文本会直接输出
- 对于合法的html标签,并不一定会显示html样式,存在一定的限制
- 如果拼接前的组件中已经输出文本,会换行再输出。如果未输出,则直接在首行输出
2.1 html元素样式
偏向于对文本的字体颜色、字号等属性进行显示,而其它html样式基本不显示
(1)a标签
- 需要定义href属性,并且至少设置一个字符时,会显示为样式。
self.window.plainTextEdit.appendHtml('<a href="http://www.baidu.com">abcddddddddddd</a>123')
self.window.plainTextEdit.appendHtml('<a href=http://www.baidu.com>abcddddddddddd</a>123')
self.window.plainTextEdit.appendHtml('<a href=\'http://www.baidu.com\'>abcddddddddddd</a>123')
self.window.plainTextEdit.appendHtml('<a href=>abcddddddddddd</a>123')
self.window.plainTextEdit.appendHtml('<a href=#>abcddddddddddd</a>123')
self.window.plainTextEdit.appendHtml('<a>abcddddddddddd</a>123')
(2)其它标签
self.window.plainTextEdit.appendHtml('<input type=input>123')
self.window.plainTextEdit.appendHtml('<adz href=\'http://www.baidu.com\'>abcddddzzdddddddd</az>123')
(3)style属性
self.window.plainTextEdit.appendHtml('<span style=color:red>123</span>')
2.2 html的空白符
一般来说,如果添加的文本中包括多个空白符,会被处理为单个空格。
可以用pre标签来嵌套,使得空白符不被合并。
但是,pre标签本身是块级元素,因此将其用于组件内整体嵌套为宜。否则的话,pre会导致分行
2.3 html实体编码
appendHtml方法支持html实体编码
self.window.plainTextEdit.appendHtml('<span style=color:red>123</span>')
self.window.plainTextEdit.appendHtml('<span style=color:red>123<> abc</span>')
3、读取组件
QPlainTextEdit组件只提供了读取纯文本的方法,而不存在读取html方法
toPlainText(self) -> str
- 只读取显示输出的文本内容,而对于标签的开始标签和结束标签并不读取
- 忽略样式
- 如果是html实体编码输出,读取时获取的是输出的字符
self.window.plainTextEdit.appendHtml('<span style=color:red>123<> abc</span>')
print(self.window.plainTextEdit.toPlainText())