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复选框
758 0
Pyside6-第四篇-QCheckBox复选框
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
961 0
Pyqt5--属性动画-文本移动(Pyside6适用)
Pyqt5--属性动画-文本移动(Pyside6适用)
288 1
Pyqt5--属性动画-文本移动(Pyside6适用)
Pyside6-第三篇-QToolButton一个的按钮
Pyside6-第三篇-QToolButton一个的按钮
315 0
|
9月前
如何用Qt抠一个圆形头像出来
如何用Qt抠一个圆形头像出来
133 0
|
9月前
Qt6学习笔记十三(绘图)
Qt6学习笔记十三(绘图)
167 0
|
9月前
QT基础教程(文本绘制)
QT基础教程(文本绘制)
184 0
Easyx图形库趣味编程note3,颜色模型
Easyx图形库趣味编程note3,颜色模型
128 0
《QT从基础到进阶·十八》QT中的各种鼠标事件QEvent
《QT从基础到进阶·十八》QT中的各种鼠标事件QEvent
261 0
|
存储 C++
QT基础教程之四QMainWindow
QT基础教程之四QMainWindow
117 1