pyqt5-QPlainTextEdit文本域

1、介绍

QPlainTextEdit文本域组件

QPlainTextEdit(parent: typing.Optional[QWidget] = None)
QPlainTextEdit(text: str, parent: typing.Optional[QWidget] = None)

2、文本内容

2.1 纯文本

(1)setPlainText

setPlainText(self, text: str)

(2)appendPlainText

appendPlainText(self, text: str) 
  • 拼接纯文本,html代码文本会直接显示而不会渲染
  • 当前组件已经存在文本,则在末尾换行拼接。当前组件不存在文本,则相当于直接设置
  • 拼接的字符串中,不能包括\n换行符,否则窗口直接崩溃,不报异常,也无法try...except捕获处理。可以将字符串split分割,然后依次调用该方法拼接
  • 拼接的文本,可能无法直接显示。
    • 尝试了调用repaint方法,但未解决
    • 待尝试切换pyqt版本
    • 其它临时方法,比如可以鼠标拖动选择,然后自动会显示出文本,也可以用缩写到工具栏再打开,或者用其它软件覆盖再移开
    • 如果是tab场景,可以设置自动切换到其它tab页再切换回来

(3)insertPlainText

insertPlainText(self, text: str)
  • 在光标处插入纯文本。即使不聚焦组件,光标仍然存在,一般是在末尾处
  • 不会进行换行操作

(4)toPlainText

toPlainText(self) -> str 
  • 获取组件显示内容,所见即所得
  • 并不关心显示的字符是否由html实体编码设置,或者是否设置了样式,只获取可见字符

2.2 html

QPlainTextEdit组件写入html的方法只有一个,即appendHtml方法,没有读取html方法

appendHtml(self, html: str)
  • 作用是拼接html代码的文本,进行一定的样式显示,区别于appendPlainText只添加普通文本
  • 需要注意该方法对任意标签,无论该标签是否是合法html标签,是否开始标签和结束标签为同一标签名,是否为显示样式,都不会在组件中输出其开始标签和结束标签部分,而开始标签和结束标签之间的文本会直接输出
  • 对于合法的html标签,并不一定会显示html样式,存在一定的限制
  • 如果拼接前的组件中已经输出文本,会换行再输出。如果未输出,则直接在首行输出

(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)html的空白符

一般来说,如果添加的文本中包括多个空白符,会被处理为单个空格。

可以用pre标签来嵌套,使得空白符不被合并。

但是,pre标签本身是块级元素,因此将其用于组件内整体嵌套为宜。否则的话,pre会导致分行

(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、光标

 

posted @ 2023-07-02 03:09  挖洞404  阅读(92)  评论(0编辑  收藏  举报