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

06-02 1485阅读

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

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

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

🏆 作者简介:景天科技苑

🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。

🏆《博客》:Python全栈,前后端开发,小程序开发,云原生K8S,人工智能,js逆向,App逆向,网络系统安全,数据分析,PyQt5和tkinter桌面开发,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:PyQt5桌面应用开发,零基础到进阶应用实战

景天的主页:景天科技苑

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

文章目录

  • QTextEdit
    • 一、创建QTextEdit对象
      • 1.1 基本创建
      • 1.2 设置和获取文本内容
      • 二、文本格式化和样式
        • 2.1 字体和样式
        • 2.2 文本对齐
        • 2.3 设置只读状态
        • 2.4 字体和格式设置
        • 2.5 滚动条控制
        • 三、文本选择和操作
          • 3.1 文本选择
          • 3.2 撤销和重做
          • 四、自动换行和滚动
            • 4.1 自动换行
            • 4.2 滚动控制
            • 五、高级用法
              • 5.1 设置HTML内容
              • 5.2 文本光标和文档操作
                • 5.2.1 插入图片
                • 六、实际应用案例
                  • 示例:富文本编辑器
                  • 八、总结

                    QTextEdit

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

                    一、创建QTextEdit对象

                    1.1 基本创建

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

                    from PyQt5.Qt import *
                    import sys
                    class Window(QWidget):
                        def __init__(self):
                            # 当我们继承某个类时,需要调用父类构造方法
                            super().__init__()
                            # 设置窗口标题
                            self.setWindowTitle("QTextEdit功能测试")
                            self.resize(500, 500)
                            self.setup_ui()
                        # 此处调用一个个UI的方法展示即可
                        def setup_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_())
                    

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

                    在这个示例中,我们首先导入了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()方法来设置文本字体,或者使用QTextCursor和QTextCharFormat来更详细地设置选定文本的格式。

                    # 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_())
                    

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

                    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)
                    while not 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中的所有文本段落设置为居中对齐。

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

                    输入内容,也会居中对齐

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

                    2.3 设置只读状态

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

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

                    2.4 字体和格式设置

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

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

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

                    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提供了verticalScrollBar和horizontalScrollBar方法来获取滚动条,从而实现对文本的滚动控制。如果需要自定义滚动行为,可以通过这些滚动条对象进行操作。

                    三、文本选择和操作

                    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 自动换行

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

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

                    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("Hello PyQt5!")
                    html_content = text_edit.toHtml()
                    print(html_content)  # 输出HTML代码
                    # 2.3 展示控件
                    window.show()
                    # 3. 应用程序的执行, 进入到消息循环
                    sys.exit(app.exec_())
                    

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

                    5.2 文本光标和文档操作

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

                    5.2.1 插入图片

                    QTextEdit支持在文本中插入图片。可以通过QTextDocument的addResource方法和QTextCursor的insertImage方法来实现。

                    # 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_())
                    

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

                    六、实际应用案例

                    示例:富文本编辑器

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

                    from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
                    import sys
                    class RichTextEditor(QMainWindow):
                        def __init__(self):
                            super().__init__()
                            self.initUI()
                        def initUI(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)
                            # 工具栏(这里仅作为示例,未实际创建)
                            # ...
                        def open_file(self):
                            # 实现打开文件的逻辑(略)
                            pass
                        def insert_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_()
                    

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

                    点击插入

                    图片

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

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

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

                    八、总结

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

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码