接着学习第三个多行文本框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
,这是一个垂直布局,它将组件(在这里是QTextEdit
和QPushButton
)垂直地堆叠起来。 - 控件:
QTextEdit
:这是一个用于编辑多行纯文本或HTML的控件。QPushButton
:这是按钮控件,用户可以通过点击按钮触发事件。
关键语句包括:
-
设置窗口标题和大小:
self.setWindowTitle("QTextEdit测试") self.resize(300, 270)
这里设置了窗口的标题为"QTextEdit测试",并指定了窗口的大小。
-
设置QTextEdit的初始文本和颜色:
self.te.setTextColor(PyQt6.QtGui.QColor(0, 0, 255)) self.te.setPlainText("Python编程\nPyQt6界面编程")
这里设置了
QTextEdit
的文本颜色为蓝色,并初始化了文本内容。 -
按钮点击事件连接:
self.btn1.clicked.connect(self.btn1Clicked) self.btn2.clicked.connect(self.btn2Clicked)
这两行代码将
btn1
和btn2
的clicked
信号分别连接到btn1Clicked
和btn2Clicked
槽函数上,这样当按钮被点击时,会执行相应的槽函数。 -
切换文本显示方式:
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格式的文本。 -
恢复文本显示:
def btn2Clicked(self): global tmp self.te.setPlainText(tmp)
当
btn2
被点击时,该函数将QTextEdit
的内容恢复为之前保存在tmp
中的纯文本内容。
这段代码通过QTextEdit
控件和按钮控件的配合使用,实现了文本编辑和显示格式的切换功能,是PyQt6库在GUI编程中的一个典型应用。