Pyside6-第十篇-纯文本QPlainTextEdit

简介: Pyside6-第十篇-纯文本QPlainTextEdit

本篇Pyside6的第十篇,依旧是开启新功能。纯文本编辑器。

与QTextEdit功能相似,但针对纯文本处理进行了优化,差异:

QPlainTextEdit是一个简略版的类,使用QTextEdit和QTextDocument作为背后实现的技术支撑 性能优于QTextEdit

先看源码

class QPlainTextEdit(QAbstractScrollArea):
    """
    QPlainTextEdit(self, parent: Optional[PySide6.QtWidgets.QWidget] = None) -> None
    QPlainTextEdit(self, text: str, parent: Optional[PySide6.QtWidgets.QWidget] = None) -> None
    """
from PySide6.QtWidgets import QApplication, QWidget, QPlainTextEdit
class Edit(QWidget):
    def __init__(self):
        super(Edit, self).__init__()
        self.setWindowTitle("QPlainTextEdit")
        self.setGeometry(300, 300, 500, 300)
        self.UI()
    def UI(self):
        self.ptext = QPlainTextEdit("QPlainTextEdit", self)
        self.ptext1 = QPlainTextEdit(self)
        self.ptext1.setGeometry(300, 150, 150, 80)
        self.show()
if __name__ == '__main__':
    app = QApplication([])
    edit = Edit()
    app.exec()

它没有QTextEdit的setText等方法,往下慢慢看。

文本设置

setPlainText(text: str)     清空先前的文本,将编辑器中的文本设置为text。
insertPlainText(text: str)  在当前光标位置插入纯文本text
appendPlainText(text: str)  将text作为一个新的段落,插入到文本编辑器末尾
appendHtml(html: str)       将html作为一个新的段落插入到末尾
toPlainText() -> str        将当前编辑器中的文本作为纯文本返回
from PySide6.QtWidgets import QApplication, QWidget, QPlainTextEdit
class Edit(QWidget):
    def __init__(self):
        super(Edit, self).__init__()
        self.setWindowTitle("QPlainTextEdit")
        self.setGeometry(300, 300, 500, 300)
        self.UI()
    def UI(self):
        self.ptext = QPlainTextEdit("QPlainTextEdit", self)
        self.ptext.insertPlainText("这个控件是QPlainTextEdit \n")    # 在光标处插入文本,没有指定光标默认在首个字符
        self.ptext.appendPlainText(" 我添加了一段文字")     # 在文章末尾处添加文本
        # self.ptext.setPlaceholderText("这是提示性文字")      # 插入提示性文字,不被获取
        print(self.ptext.toPlainText())     # 将当前编辑器中的文本作为纯文本返回
        self.show()
if __name__ == '__main__':
    app = QApplication([])
    edit = Edit()
    app.exec()

以上就是一点点的文本效果了。

看看下面的图中的方法,QPlainTextEdit提供了很多文本方法,也是可以写HTML等。

信号与槽

.textChanged()   当文档的内容发生变化时发射此信号。例如文本插入删除或应用格式等
.selectionChanged() 当选中改变时发射此信号
.blockCountChanged() 当文档中块的数量发生变化时发射此信号,新的块数量作为参数传出
.cursorPositionChanged() 当光标位置改变时发射此信号
.copyAvailable(yes: bool)  当复制功能可用状态发生变化时发射此信号,可用状态作为参数传出
.undoAvailable(available: bool) 当撤销功能可用状态发生变化时发射此信号,可用状态作为参数传出
.redoAvailable(available: bool) 当重做功能可用状态发生变化时发射此信号,可用状态作为参数传出
.updateRequest(rect: QRect, dy: int) 当文本文档需要更新指定的矩形时发射此信号。详情见下一节的案例
.modificationChanged(changed: bool) 当文档的内容以影响修改状态的方式发生变化时发射此信号,文档是否已被修改作为参数传出

信号很多,但是实际常用的并没有这么多。挑几个来玩一玩

from PySide6.QtWidgets import QApplication, QWidget, QPlainTextEdit, QPushButton
class Edit(QWidget):
    def __init__(self):
        super(Edit, self).__init__()
        self.setWindowTitle("QPlainTextEdit")
        self.setGeometry(300, 300, 580, 300)
        self.UI()
    def UI(self):
        self.ptext = QPlainTextEdit(self)
        print(self.ptext.sizeHint())  # 获取控件大小
        self.btnAdd = QPushButton("添加", self)
        self.btnAdd.setGeometry(260, 50, 40, 30)
        self.btnClear = QPushButton("清除", self)
        self.btnClear.setGeometry(260, 90, 40, 30)
        self.ptext1 = QPlainTextEdit(self)
        self.ptext1.setGeometry(310, 0, 256, 192)
        self.btnAdd.clicked.connect(self.addText)
        self.btnClear.clicked.connect(self.clearText)
        self.ptext.textChanged.connect(self.addText)    # 文本发生变化时触发
        self.ptext.selectionChanged.connect(self.clearText)     # 当选中改变时发射此信号
        self.show()
    def addText(self):
        text = self.ptext.toPlainText()
        self.ptext1.insertPlainText(text + '\n')
    def clearText(self):
        self.ptext.clear()
        self.ptext1.clear()
if __name__ == '__main__':
    app = QApplication([])
    edit = Edit()
    app.exec()


最后,代码地址:

https://gitee.com/qinganan_admin/Pyside6_Information/tree/master/%E7%AC%AC%E5%85%AD%E7%AB%A0%EF%BC%8C%E7%BA%AF%E6%96%87%E6%9C%ACQPlainTextEdit


目录
相关文章
|
10月前
Pyside6-第四篇-QCheckBox复选框
Pyside6-第四篇-QCheckBox复选框
439 0
Pyside6-第四篇-QCheckBox复选框
|
10月前
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
508 0
|
10月前
Pyside6-第九篇-QTextEdit多行文本编辑器
Pyside6-第九篇-QTextEdit多行文本编辑器
201 0
|
10月前
Pyside6-第三篇-QToolButton一个的按钮
Pyside6-第三篇-QToolButton一个的按钮
176 0
|
1月前
QT基础教程(文本绘制)
QT基础教程(文本绘制)
64 0
|
10月前
Pyside6-第五篇-单选按钮QRadioButton
Pyside6-第五篇-单选按钮QRadioButton
293 0
|
Python
Python高级进阶#012 pyqt5 QLineEdit文本事件应用
Python高级进阶#012 pyqt5 QLineEdit文本事件应用
291 0
|
机器学习/深度学习 人工智能 自然语言处理
一定要用Photoshop?no!动手用Python做一个颜色提取器! ⛵
本文使用Python实现『颜色提取』功能,构建『简单提取器』与『复杂提取器』,从单个或多个图像的某个位置提取颜色,类似PS或者PPT中的取色器功能。
254 1
一定要用Photoshop?no!动手用Python做一个颜色提取器! ⛵
|
缓存 数据可视化 Unix
QCustomPlot开发笔记(一):QCustomPlot简介、下载以及基础绘图
QCustomPlot开发笔记(一):QCustomPlot简介、下载以及基础绘图
QCustomPlot开发笔记(一):QCustomPlot简介、下载以及基础绘图
|
前端开发
1.5w字的Rmarkdown入门教程汇总(三)
1.5w字的Rmarkdown入门教程汇总
148 0
1.5w字的Rmarkdown入门教程汇总(三)

相关实验场景

更多