PyQt6第四章控件功能之4.2常用控件(4.2.3多行文本框:QTextEdit)

接着学习第三个多行文本框QTextEdit

QTextEdit类中的常用方法如下:

setPlainText():设置多行文本框的文本内容。

toPlainText():返回多行文本框的文本内容。

setTextColor():设置文本颜色,例如,将文本显示为蓝色,参数:PyQt6.QtGui.QColor(0,0,255)

setTextBackgroundColor():设置文本的背景颜色, 颜色参数与setTextColor0相同

setHtml():设置多行文本框的内容为HTML文档

toHtml():返回多行文本框的HTML文档内容

setWordWrapMode():设置自动换行

clear():清除多行文本框的内容

QTextEdit中的常用信号如下:

信号标识:描述

textChanged:文本内容发生改变时发送

selectionChanged:选中内容发生改变时发送

cursorPositionChanged:光标位置发生改变时发送

currentCharFormatChanged:当前字符格式发生改变时

copyAvailable:复制可用时发送

redoAvailable:重做可用时发送

undoAvailable:撤销可用时发送

【例4.4】QTextEdit多行文本框测试,测试如下:

          

from PyQt6.QtWidgets import QApplication, QWidget, QTextEdit, QVBoxLayout, QPushButton  # 导入PyQt6库中的相关组件
import sys  # 导入Python的系统模块
import PyQt6.QtGui  # 导入PyQt6中的图形库模块


# 定义自定义窗口类MyWidget,继承自QWidget
class MyWidget(QWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)  # 调用父类QWidget的构造函数
        self.setWindowTitle("QTextEdit测试")  # 设置窗口标题为"QTextEdit测试"
        self.resize(300, 270)  # 设置窗口的大小为300x270
        self.te = QTextEdit()  # 创建一个QTextEdit对象
        self.btn1 = QPushButton("显示HTML")  # 创建一个显示HTML内容的按钮
        self.btn2 = QPushButton("恢复显示")  # 创建一个恢复显示的按钮

        # 创建一个垂直布局对象
        vlayout = QVBoxLayout()
        # 将QTextEdit对象添加到垂直布局中
        vlayout.addWidget(self.te)
        # 将显示HTML的按钮添加到垂直布局中
        vlayout.addWidget(self.btn1)
        # 将恢复显示的按钮添加到垂直布局中
        vlayout.addWidget(self.btn2)
        # 将垂直布局设置为窗口的布局
        self.setLayout(vlayout)

        # 设置QTextEdit的文本颜色为蓝色
        self.te.setTextColor(PyQt6.QtGui.QColor(0, 0, 255))
        # 在QTextEdit中设置纯文本内容
        self.te.setPlainText("Python编程\nPyQt6界面编程")

        # 当显示HTML按钮被点击时,执行btn1Clicked方法
        self.btn1.clicked.connect(self.btn1Clicked)
        # 当恢复显示按钮被点击时,执行btn2Clicked方法
        self.btn2.clicked.connect(self.btn2Clicked)

        # 当显示HTML按钮被点击时执行的方法

    def btn1Clicked(self):
        global tmp  # 声明tmp为全局变量
        tmp = self.te.toPlainText()  # 将QTextEdit中的纯文本内容保存到tmp变量中
        # 在QTextEdit中设置HTML内容,并设置字体颜色和大小,以及换行显示其他内容
        self.te.setHtml("<font color='red' size='6'>C++程序设计<p>Spring Boot应用开发</font>")

        # 当恢复显示按钮被点击时执行的方法

    def btn2Clicked(self):
        global tmp  # 声明tmp为全局变量
        # 将QTextEdit中的内容恢复为之前保存的纯文本内容
        self.te.setPlainText(tmp)


if __name__ == "__main__":  # 确保此代码块仅在作为主程序运行时执行
    tmp = ''  # 初始化tmp变量为空字符串
    app = QApplication(sys.argv)  # 创建一个QApplication对象,用于管理GUI应用程序的控制流和主要设置
    w = MyWidget()  # 创建一个MyWidget对象
    w.show()  # 显示窗口
    sys.exit(app.exec())  # 进入应用程序的主事件循环,等待用户操作,直到应用程序退出

这段代码主要实现了一个简单的文本编辑器功能,允许用户在QTextEdit控件中输入和编辑文本,并且可以通过按钮切换文本的显示方式:从纯文本切换到HTML格式,然后再恢复回纯文本

使用的布局和控件如下:

  • 布局QVBoxLayout,这是一个垂直布局,它将组件(在这里是QTextEditQPushButton)垂直地堆叠起来。
  • 控件
    • QTextEdit:这是一个用于编辑多行纯文本或HTML的控件。
    • QPushButton:这是按钮控件,用户可以通过点击按钮触发事件。

关键语句包括:

  1. 设置窗口标题和大小

    self.setWindowTitle("QTextEdit测试")  
    self.resize(300, 270)

    这里设置了窗口的标题为"QTextEdit测试",并指定了窗口的大小。

  2. 设置QTextEdit的初始文本和颜色

    self.te.setTextColor(PyQt6.QtGui.QColor(0, 0, 255))  
    self.te.setPlainText("Python编程\nPyQt6界面编程")

    这里设置了QTextEdit的文本颜色为蓝色,并初始化了文本内容。

  3. 按钮点击事件连接

    self.btn1.clicked.connect(self.btn1Clicked)  
    self.btn2.clicked.connect(self.btn2Clicked)

    这两行代码将btn1btn2clicked信号分别连接到btn1Clickedbtn2Clicked槽函数上,这样当按钮被点击时,会执行相应的槽函数。

  4. 切换文本显示方式

    def btn1Clicked(self):  
        global tmp  
        tmp = self.te.toPlainText()  
        self.te.setHtml("<font color='red' size='6'>C++程序设计<p>Spring Boot应用开发</font>")

    btn1被点击时,该函数首先保存当前QTextEdit中的纯文本内容到全局变量tmp中,然后将QTextEdit的内容设置为HTML格式的文本。

  5. 恢复文本显示

    def btn2Clicked(self):  
        global tmp  
        self.te.setPlainText(tmp)

    btn2被点击时,该函数将QTextEdit的内容恢复为之前保存在tmp中的纯文本内容。

这段代码通过QTextEdit控件和按钮控件的配合使用,实现了文本编辑和显示格式的切换功能,是PyQt6库在GUI编程中的一个典型应用。

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值