百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

6.6 PyQt5控件介绍【富文本框控件】-QPlainTextEdit

yuyutoo 2025-04-06 00:07 6 浏览 0 评论

1.QPlainTextEdit简介

PyQt5中QPlainTextEdit控件用于显示和编辑多行纯文本内容,与 QTextEdit 相比,QPlainTextEdit 不支持富文本(如 HTML),只处理纯文本,因此它的性能更好,尤其是处理大量文本时。

2.QPlainTextEdit案例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPlainTextEdit, QPushButton, QVBoxLayout
from PyQt5.QtGui import QColor, QTextCursor


class QTextEditDemo(QWidget):
    def __init__(self):
        super(QTextEditDemo, self).__init__()
        self.init_ui()

    def init_ui(self):
        v_layout = QVBoxLayout(self)

        self.plain_text_edit = QPlainTextEdit()  # 多行文本
        self.plain_text_edit.setPlainText("这是一个QPlainTextEdit控件的示例。")

        # 向文本框末尾追加文本
        self.plain_text_edit.appendPlainText('追加内容')

        # 获取文本框内容
        print(self.plain_text_edit.toPlainText())

        # 设置光标位置
        cursor = self.plain_text_edit.textCursor()
        # 将光标移动到第5个字符
        cursor.setPosition(5, QTextCursor.MoveAnchor)
        # 在第15个位置结束,并保持选中状态
        cursor.setPosition(15, QTextCursor.KeepAnchor)

        # 插入文本
        # cursor.insertText('【插入文本】')

        # 清除当前选中文本
        # cursor.clearSelection()

        # 获取选中文本
        # cursor.selectedText()

        self.plain_text_edit.setTextCursor(cursor)

        v_layout.addWidget(self.plain_text_edit)

        self.plain_text_edit.textChanged.connect(self.text_changed)
        self.plain_text_edit.selectionChanged.connect(self.selection_changed)

    def text_changed(self):
        print('文本发生变化')

    def selection_changed(self):
        print('重新选中文本')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QTextEditDemo()
    w.show()
    sys.exit(app.exec())

3.运行结果


4.常用方法

方法

描述

setPlainText(text: str)

设置纯文本内容

toPlainText()

获取文本框中的纯文本内容

appendPlainText(text: str)

向文本框末尾追加文本

clear()

清除文本框中的所有内容

textCursor()

返回当前的 QTextCursor 光标对象,可用于更精细的文本编辑和选择

setTextCursor(cursor: QTextCursor)

设置 QTextCursor,用以指定光标位置或选中区域

selectAll()

选中所有文本

copy()

复制选中的文本到剪贴板

cut()

剪切选中的文本到剪贴板

paste()

从剪贴板粘贴文本

find()

查找文本,可以传递选项(例如向前查找、向后查找、区分大小写等)

blockCount()

返回文本框中的块数(段落)

5.常用信号

方法

描述

text_changed()

文本内容发生变化时触发

blockCountChanged(int)

当文档中的文本块(一般是段落或行)数量发生变化时发出此信号

cursorPositionChanged()

当光标位置发生变化时发出此信号

selectionChanged()

当用户选中的文本范围发生变化时发出此信号

modificationChanged(bool)

当文档的修改状态发生变化时发出此信号

redoAvailable(bool)

当文档的“重做”操作可用或不可用时发出此信号

undoAvailable(bool)

当文档的“撤销”操作可用或不可用时发出此信号

copyAvailable(bool)

当文档中有选中的文本时发出此信号

updateRequest(rect QRect , dy int)

当文本框需要更新显示区域时发出此信号。参数:rect(QRect)需要更新的矩形区域;dy(int)文本框内容的垂直滚动距离



相关推荐

VBA中利用Instr函数(vba int函数)

【分享成果,随喜正能量】每一个在你的生命里出现的人,都有原因,喜欢你的人给了你温暖和勇气,你喜欢的人让你学会了爱和自持,你不喜欢的人教会你宽容与尊重,不喜欢你的人让你自省与成长。。...

Insta360 Link体验:支持4K画质,一款使用场景丰富的AI云台摄像头

记者|王公逸伴随直播、线上会议需求的兴起,网络直播的需求愈发增大,8月2日,影石Insta360正式推出全新产品:Insta360Link,这是一款AI智能云台摄像头。从产品形态来说,Insta3...

VBA技术资料MF299:利用Instr进行文本查找

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VB...

Fabric.js 拖放元素进画布 - 掘金

本文简介点赞+关注+收藏=学会了学习Fabric.js,我的建议是看文档不如看demo。本文实现的功能:将元素拖进到画布中并生成对应的图形或图片。效果如下图所示:...

Vue3为什么推荐使用ref而不是reactive

为什么推荐使用ref而不是reactivereactive本身具有很大局限性导致使用过程需要额外注意,如果忽视这些问题将对开发造成不小的麻烦;ref更像是vue2时代optionapi的data的替...

Fabric.js 样式不更新怎么办?(js更改样式)

本文简介带尬猴,我嗨德育处主任不知道你有没有遇到过在使用Fabric.js时无意中一些骚操作修改了元素的样式,但刷新画布却没更新元素样式?如果你也遇到同样的问题的话,可以尝试使用本文的方法。...

Fabric.js 修改画布交互方式到底有什么用?

本文简介点赞+关注+收藏=学会了fabric.js为我们提供了很多厉害的方法。今天要搞明白的一个东西是canvas.interactive。官方文档对canvas.interact...

Rust Web编程:第五章 在浏览器上显示内容

我们现在正处于可以构建一个Web应用程序的阶段,该应用程序可以使用不同的方法和数据管理一系列HTTP请求。这很有用,特别是当我们为微服务构建服务器时。然而,我们也希望非程序员能够与我们的应...

Fabric.js 自由绘制椭圆 - 掘金(canvas画椭圆)

本文简介点赞+关注+收藏=学会了本文讲解在Fabric.js中如何自由绘制椭圆形,如果你还不了解Fabric.js,可以查阅《Fabric.js从入门到精通》。效果如下图所示...

手把手教你实现JS手搓"防抖"优化代码——专业的事用专业的方法!

前言在我们前端编程中,假如我们要给后端发送请求,万一手抖多点了几次,多发送了几遍怎么办?解决方案:防抖!这种事就要交给我们专业的“防抖”先生来处理!今天,我们就来教大家手搓“防抖”...

详解虚拟DOM与Diff算法(虚拟dom一定比实际dom快吗)

vue的虚拟DOM,Diff算法,其中一些关键的地方从别处搬运了一些图进行说明(感谢制图的大佬),也包含比较详细的源码解读。...

走进 React Fiber 的世界(我走进你的世界手势舞视频)

文/阿里淘系F(x)Team-冷卉Fiber设计思想Fiber是对React核心算法的重构,facebook团队使用两年多的时间去重构React的核心算法,在React16以上...

前端新一代框架 Svelte 火了!十个场景带你简单认识它!

近几年听到的主流框架都是Vue、React、Angular,但其实有一个框架在国外非常火,用起来也是很方便,那就是...

借助DeepSeek实现了一个PDF阅读器

1、简介使用pdf.js库加载和显示PDF文件。实现了翻页、缩放功能。提供了基本的错误处理。功能特点:支持选择本地PDF文件。可以逐页查看PDF内容。支持放大缩小功能。界面简洁,易于使...

DeepSeek代码之旅1:卫星地图标记方法之——html语言的实现

最近遇到一个任务,具体功能如下:1、调用高德地图API,图层为卫星图层,根据需要标记兴趣点;2、标记完成后可以保存兴趣点,便于下次加载历史兴趣点。...

取消回复欢迎 发表评论: