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


目录
相关文章
Pyside6-第四篇-QCheckBox复选框
Pyside6-第四篇-QCheckBox复选框
1616 0
Pyside6-第四篇-QCheckBox复选框
Pyside6-第八篇-QLabel文本标签
Pyside6-第八篇-QLabel文本标签
968 0
|
Python
Pyside6-第一篇-创建第一个窗口
Pyside6-第一篇-创建第一个窗口
1091 0
|
容器
Pyside6-第十三篇-布局(最后一章废话-理论篇)
Pyside6-第十三篇-布局(最后一章废话-理论篇)
1501 0
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
1830 0
|
存储 NoSQL 关系型数据库
从大数据到大模型:如何做到“心无桎梏,身无藩篱”
在大数据和大模型的加持下,现代数据技术释放了巨大的技术红利,通过多种数据范式解除了数据的桎梏,使得应用程序达到了“心无桎梏,身无藩篱”的自在境界,那么现代应用有哪些数据范式呢?这正是本文尝试回答的问题。
2079 101
Pyside6-第九篇-QTextEdit多行文本编辑器
Pyside6-第九篇-QTextEdit多行文本编辑器
966 0
|
JSON 数据可视化 数据挖掘
python数据可视化开发(2):pandas读取Excel的数据格式处理(数据读取、指定列数据、DataFrame转json、数学运算、透视表运算输出)
python数据可视化开发(2):pandas读取Excel的数据格式处理(数据读取、指定列数据、DataFrame转json、数学运算、透视表运算输出)
858 0
Pyside6-第三篇-QToolButton一个的按钮
Pyside6-第三篇-QToolButton一个的按钮
830 0
|
机器学习/深度学习 数据采集 数据挖掘
Pandas中的行序反转与列序反转
Pandas中的行序反转与列序反转
546 3

热门文章

最新文章