【python】PyQt5中富文本框QTextEdit的详细教程与应用实战

【python】PyQt5中富文本框QTextEdit的详细教程与应用实战
在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,ZEEKLOG全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,云原生K8S,人工智能,js逆向,App逆向,网络系统安全,数据分析,PyQt5和tkinter桌面开发,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:PyQt5桌面应用开发,零基础到进阶应用实战
景天的主页:景天科技苑
在这里插入图片描述

文章目录

QTextEdit

在PyQt5中,QTextEdit是一个非常强大的多行文本编辑控件,它不仅能够显示和编辑纯文本,还支持富文本(包括HTML格式)的显示和编辑。这使得QTextEdit成为在开发图形用户界面(GUI)应用时,用于处理文本内容的理想选择。本文将结合具体案例,详细介绍QTextEdit的各种用法和功能。

一、创建QTextEdit对象

1.1 基本创建

要创建一个QTextEdit对象,首先需要在PyQt5中导入相应的模块,并实例化QTextEdit类。以下是一个基本的示例,展示了如何创建一个包含QTextEdit的窗口:

from PyQt5.Qt import*import sys classWindow(QWidget):def__init__(self):# 当我们继承某个类时,需要调用父类构造方法super().__init__()# 设置窗口标题 self.setWindowTitle("QTextEdit功能测试") self.resize(500,500) self.setup_ui()# 此处调用一个个UI的方法展示即可defsetup_ui(self):#创建QTextEdit富文本输入框 te = QTextEdit("景天来了",self) te.move(100,100) te.resize(200,200)#设置背景色 te.setStyleSheet("background-color:cyan;")if __name__ =='__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
在这里插入图片描述

在这个示例中,我们首先导入了PyQt5的模块。然后,我们通过面向对象变成方式创建了一个QWidget作为主窗口。通过实例化QTextEdit,我们创建了一个文本编辑框,并将其移动,设置其大小和背景颜色,最后将这个布局设置给主窗口,并显示窗口。

1.2 设置和获取文本内容

QTextEdit提供了多种方法来设置和获取文本内容。最常用的方法是setPlainText()toPlainText()

text_edit.setPlainText("Hello, PyQt5!") text = text_edit.toPlainText()

通过setPlainText()方法,我们可以将纯文本内容设置到QTextEdit中。而toPlainText()方法则用于获取QTextEdit中的纯文本内容。

二、文本格式化和样式

2.1 字体和样式

QTextEdit支持丰富的文本格式化功能,包括设置字体、颜色、样式和对齐方式等。你可以使用setFont()方法来设置文本字体,或者使用QTextCursorQTextCharFormat来更详细地设置选定文本的格式。

# 0. 导入需要的包和模块from PyQt5.Qt import*# 主要包含了我们常用的一些类, 汇总到了一块import sys # 1. 创建一个应用程序对象 app = QApplication(sys.argv)# 2. 控件的操作# 2.1 创建控件 window = QWidget()# 2.2 设置控件#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题 window.setWindowTitle("字体样式")#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏 window.resize(500,500) text_edit = QTextEdit(window) text_edit.move(100,100)#设置普通文本 text_edit.setPlainText("Hello, PyQt5!")# 设置字体 text_edit.setFont(QFont('Arial',12))# 2.3 展示控件 window.show()# 3. 应用程序的执行, 进入到消息循环 sys.exit(app.exec_())
在这里插入图片描述

2.2 文本对齐

QTextEdit支持段落对齐方式,包括左对齐、右对齐和居中对齐。要设置文本对齐方式,可以使用QTextBlockFormat类,并结合QTextCursor来实现。

# 0. 导入需要的包和模块from PyQt5.Qt import*# 主要包含了我们常用的一些类, 汇总到了一块import sys # 1. 创建一个应用程序对象 app = QApplication(sys.argv)# 2. 控件的操作# 2.1 创建控件 window = QWidget()# 2.2 设置控件#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题 window.setWindowTitle("文本对齐")#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏 window.resize(500,500) text_edit = QTextEdit(window) text_edit.move(100,100)#设置普通文本 text_edit.setPlainText("Hello, PyQt5!") cursor = QTextCursor(text_edit.document()) cursor.movePosition(QTextCursor.Start)whilenot cursor.atEnd(): cursor.movePosition(QTextCursor.StartOfBlock) cursor.select(QTextCursor.BlockUnderCursor) block_format = QTextBlockFormat() block_format.setAlignment(Qt.AlignCenter) cursor.mergeBlockFormat(block_format) cursor.movePosition(QTextCursor.EndOfBlock) cursor.movePosition(QTextCursor.NextBlock)# 2.3 展示控件 window.show()# 3. 应用程序的执行, 进入到消息循环 sys.exit(app.exec_())

上述代码将QTextEdit中的所有文本段落设置为居中对齐。

在这里插入图片描述


输入内容,也会居中对齐

在这里插入图片描述

2.3 设置只读状态

使用setReadOnly方法可以设置QTextEdit是否为只读状态。当设置为True时,用户无法编辑文本,只能查看。

text_edit.setReadOnly(True)# 设置为只读 text_edit.setReadOnly(False)# 设置为可编辑

2.4 字体和格式设置

在这里插入图片描述

QTextEdit支持丰富的文本格式化功能。可以通过setFontsetFontPointSize方法设置文本的字体和大小。如果需要更详细的格式化,如加粗、斜体、下划线等,可以使用QTextCursorQTextCharFormat类。

以下是一个设置文本格式的示例:

from PyQt5.QtGui import QTextCursor, QTextCharFormat, QFont cursor = text_edit.textCursor() char_format = QTextCharFormat() char_format.setFontWeight(QFont.Bold) cursor.mergeCharFormat(char_format)

2.5 滚动条控制

QTextEdit提供了verticalScrollBarhorizontalScrollBar方法来获取滚动条,从而实现对文本的滚动控制。如果需要自定义滚动行为,可以通过这些滚动条对象进行操作。

三、文本选择和操作

3.1 文本选择

用户可以通过鼠标或键盘选择QTextEdit中的文本,并执行如复制、剪切和粘贴等操作。QTextEdit也提供了一组方法来实现这些功能,例如selectAll()copy()paste()

# 选择所有文本 text_edit.selectAll()# 复制选中的文本 text_edit.copy()# 粘贴文本到光标位置 text_edit.paste()

3.2 撤销和重做

QTextEdit支持撤销和重做功能,用户可以通过菜单项或快捷键来触发这些操作。你也可以通过编程方式来实现撤销和重做功能。

# 撤销操作 text_edit.undo()# 重做操作 text_edit.redo()

四、自动换行和滚动

4.1 自动换行

在这里插入图片描述


在这里插入图片描述

QTextEdit支持自动换行功能,当文本内容超出控件的显示范围时,会自动换行显示,而不是水平滚动。你可以通过setLineWrapMode()方法来设置自动换行的模式。

# 设置自动换行模式为以控件宽度为限制,保持单词完整性 text_edit.setLineWrapMode(QTextEdit.WidgetWidth)

4.2 滚动控制

QTextEdit提供了垂直和水平滚动条,你可以通过verticalScrollBar()horizontalScrollBar()方法来获取这些滚动条,进而控制滚动条的位置。

vertical_scrollbar = text_edit.verticalScrollBar() vertical_scrollbar.setValue(100)# 滚动到垂直位置100

五、高级用法

5.1 设置HTML内容

QTextEdit支持HTML格式的文本。可以使用setHtml方法来设置HTML内容,并使用toHtml方法获取当前的HTML内容。这对于需要显示富文本的应用程序非常有用。

# 0. 导入需要的包和模块from PyQt5.Qt import*# 主要包含了我们常用的一些类, 汇总到了一块import sys # 1. 创建一个应用程序对象 app = QApplication(sys.argv)# 2. 控件的操作# 2.1 创建控件 window = QWidget()# 2.2 设置控件#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题 window.setWindowTitle("设置html内容")#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏 window.resize(500,500) text_edit = QTextEdit(window) text_edit.move(100,100) text_edit.setHtml("<b>Hello</b> <i>PyQt5!</i>") html_content = text_edit.toHtml()print(html_content)# 输出HTML代码# 2.3 展示控件 window.show()# 3. 应用程序的执行, 进入到消息循环 sys.exit(app.exec_())
在这里插入图片描述

5.2 文本光标和文档操作

QTextCursorQTextEdit中一个非常重要的类,它用于对文档进行编辑和格式化。通过textCursor方法可以获得当前的光标对象,然后使用它来对选定的文本进行操作,如插入文本、删除文本、应用格式等。

5.2.1 插入图片

QTextEdit支持在文本中插入图片。可以通过QTextDocumentaddResource方法和QTextCursorinsertImage方法来实现。

# 0. 导入需要的包和模块from PyQt5.Qt import*# 主要包含了我们常用的一些类, 汇总到了一块import sys # 1. 创建一个应用程序对象 app = QApplication(sys.argv)# 2. 控件的操作# 2.1 创建控件 window = QWidget()# 2.2 设置控件#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题 window.setWindowTitle("插入图片")#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏 window.resize(500,500) text_edit = QTextEdit(window) text_edit.move(100,100) image = QImage("../../imgs/python-gui.png") cursor = text_edit.textCursor() document = text_edit.document() document.addResource(QTextDocument.ImageResource, QUrl("image"), image) cursor.insertImage("image")# 2.3 展示控件 window.show()# 3. 应用程序的执行, 进入到消息循环 sys.exit(app.exec_())
在这里插入图片描述

六、实际应用案例

示例:富文本编辑器

以下是一个简单的富文本编辑器示例,它结合了QTextEdit的多个功能,如设置文本格式、插入图片、显示HTML内容等。

from PyQt5.Qt import*# 主要包含了我们常用的一些类, 汇总到了一块import sys classRichTextEditor(QMainWindow):def__init__(self):super().__init__() self.initUI()definitUI(self): self.setWindowTitle('富文本编辑器') self.setGeometry(100,100,800,600) self.text_edit = QTextEdit() self.setCentralWidget(self.text_edit)# 创建菜单栏 menubar = self.menuBar()# 文件菜单 file_menu = menubar.addMenu('文件') open_action = QAction('打开', self) open_action.setShortcut('Ctrl+O') open_action.triggered.connect(self.open_file) file_menu.addAction(open_action)# 插入菜单 insert_menu = menubar.addMenu('插入') image_action = QAction('图片', self) image_action.triggered.connect(self.insert_image) insert_menu.addAction(image_action)# 工具栏(这里仅作为示例,未实际创建)# ...defopen_file(self):# 实现打开文件的逻辑(略)passdefinsert_image(self):# 插入图片的逻辑 image_path ="../../imgs/python-gui.png"# 假设这是用户选择的图片路径 image = QImage(image_path) cursor = self.text_edit.textCursor() document = self.text_edit.document() document.addResource(QTextDocument.ImageResource, QUrl("image"), image) cursor.insertImage("image")if __name__ =='__main__': app = QApplication(sys.argv) editor = RichTextEditor() editor.show() app.exec_()
在这里插入图片描述


点击插入
图片

在这里插入图片描述

在这个示例中,我们创建了一个QMainWindow作为主窗口,并在其中放置了一个QTextEdit作为文本编辑器。我们还添加了一个菜单栏,包括“文件”和“插入”两个菜单项,分别用于打开文件和插入图片。

注意:上述代码中的open_file方法没有实现具体的文件打开逻辑,仅作为示例框架的一部分。在实际应用中,你需要使用QFileDialog等类来实现文件选择功能。

八、总结

QTextEdit是PyQt5中一个功能强大的文本编辑控件,支持纯文本和富文本的编辑和显示。通过本文的介绍和示例代码,你应该已经掌握了QTextEdit的基本用法和高级功能。希望这些信息能够帮助你在开发基于PyQt5的应用程序时,更好地利用QTextEdit控件。

Read more

最新电子电气架构(EEA)调研-3

而新一代的强实时性、高确定性,以及满足CAP定理的同步分布式协同技术(SDCT),可以实现替代TSN、DDS的应用,且此技术已经在无人车辆得到验证,同时其低成本学习曲线、无复杂二次开发工作,将开发人员的劳动强度、学习曲线极大降低,使开发人员更多的去完成算法、执行器功能完善。 五、各大车厂的EEA 我们调研策略是从公开信息中获得各大车厂的EEA信息,并在如下中进行展示。 我们集中了华为、特斯拉、大众、蔚来、小鹏、理想、东风(岚图)等有代表领先性的车辆电子电气架构厂商。        1、华为 图12 华为的CCA电子电气架构              (1)华为“计算+通信”CC架构的三个平台                         1)MDC智能驾驶平台;                         2)CDC智能座舱平台                         3)VDC整车控制平台。        联接指的是华为智能网联解决方案,解决车内、车外网络高速连接问题,云服务则是基于云计算提供的服务,如在线车主服务、娱乐和OTA等。 华

By Ne0inhk
Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 文章目录 * Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 * Apache IoTDB 核心特性与价值 * Apache IoTDB 监控面板完整部署方案 * 安装步骤 * 步骤一:IoTDB开启监控指标采集 * 步骤二:安装、配置Prometheus * 步骤三:安装grafana并配置数据源 * 步骤四:导入IoTDB Grafana看板 * TimechoDB(基于 Apache IoTDB)增强特性 * 总结与应用场景建议 Apache IoTDB 核心特性与价值 Apache IoTDB 专为物联网场景打造的高性能轻量级时序数据库,以 “设备 - 测点” 原生数据模型贴合物理设备与传感器关系,通过高压缩算法、百万级并发写入能力和毫秒级查询响应优化海量时序数据存储成本与处理效率,同时支持边缘轻量部署、

By Ne0inhk
SQL Server 2019安装教程(超详细图文)

SQL Server 2019安装教程(超详细图文)

SQL Server 介绍) SQL Server 是由 微软(Microsoft) 开发的一款 关系型数据库管理系统(RDBMS),支持结构化查询语言(SQL)进行数据存储、管理和分析。自1989年首次发布以来,SQL Server 已成为企业级数据管理的核心解决方案,广泛应用于金融、电商、ERP、CRM 等业务系统。它提供高可用性、安全性、事务处理(ACID)和商业智能(BI)支持,并支持 Windows 和 Linux 跨平台部署。 一、获取 SQL Server 2019 安装包 1. 官方下载方式 前往微软官网注册账号后,即可下载 SQL Server Developer 版本(

By Ne0inhk