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('&lt;span style=color:red>123</span>')

self.window.plainTextEdit.appendHtml('&lt;span style=color:red>123&lt;&gt;&nbsp;&nbsp;abc</span>')

3、读取组件

QPlainTextEdit组件只提供了读取纯文本的方法,而不存在读取html方法

toPlainText(self) -> str
  • 只读取显示输出的文本内容,而对于标签的开始标签和结束标签并不读取
  • 忽略样式
  • 如果是html实体编码输出,读取时获取的是输出的字符
self.window.plainTextEdit.appendHtml('&lt;span style=color:red>123&lt;&gt;&nbsp;&nbsp;abc</span>')
print(self.window.plainTextEdit.toPlainText())

 

posted @ 2023-06-29 14:12  挖洞404  阅读(1325)  评论(0编辑  收藏  举报