1. 描述
- 是一个高级的WYSIWYG(What You See Is What You Get 所见即所得)查看器/编辑器,支持使用HTML样式标签的富文本格式。
- 支持的HTML4标签子集
- https://doc.qt.io/qt-5/richtext-html-subset.html
- 如果不够, 可以考虑使用WebKit
- 它经过优化,可以处理大型文档并快速响应用户输入。
- 适用于段落和字符:如果文本太大而无法在文本编辑的视口中查看,则会出现滚动条
- 文本编辑可以加载纯文本和富文本文件:显示图像,列表和表格
2. 继承
QAbstractScrollArea
演示:创建一个文本编辑器
from PyQt5.Qt import *import sysif __name__ == '__main__':app = QApplication(sys.argv)window = QWidget()window.setWindowTitle('QTextEdit使用')window.resize(500, 500)# 创建文本编辑器te = QTextEdit('QTextEdit...', window)te.move(50, 50)te.resize(300, 300)te.setStyleSheet('background-color: cyan;')window.show()sys.exit(app.exec_())
3. 功能作用
3.1 占位提示符
3.1.1 API
API | 功能 | 备注 |
---|---|---|
| | |
| | |
3.1.2 应用场景
在文本框内部内容为空时, 给用户的文本提示信息
3.1.3 演示
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')self.placeholder_prompt_text()def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.2 内容设置
3.2.1 普通文本
API | 功能 | 备注 |
---|---|---|
| | |
| | |
| | |
3.2.2 HTML
API | 功能 | 备注 |
---|---|---|
| | |
| | |
| | |
3.2.3 设置文本-自动判断格式
setText(str)
3.2.4 追加文本
append(str)
3.2.5 清空
clear()
3.2.6 文本光标
3.2.6.1 理论基础
- 通过文本光标, 可以操作编辑 文本文档 对象
- 整个文本编辑器, 其实就是为编辑 这个文本文档 提供了一个可视化的界面
- 简单理解, 可以比喻成 一个doc文档, 使用word软件打开了这个文档, 你可以随意编辑
3.2.6.2 获取文本光标方法
API | 功能 | 备注 |
---|---|---|
| | |
3.2.6.3 QTextDocument返回值
3.2.6.3.1 描述
- 保存带格式的文本文档
- 为样式化文本和各种类型的文档元素提供支持(框架、文本块列表、表格、图像等)
- 是结构化富文本文档的容器
- 一个空的文档包含一个根框架,这个框架包含一个空的文本块
- 当需要进行文档结构导航时,有时候可以从根框架开始。
- 因为根框架提供了访问整个文档结构的能力
- 文本属性在字符级别和块级别定义
- 在字符级别可以指定字体、颜色和大小
- 在块级别可以指定更高一级的行为,例如文本流方向、对齐方式和背景色
3.2.6.3.2 继承结构图
- QTextDocument
- QTextBlock
3.2.6.4 textCursor() -> QTextCursor
3.2.6.4.1 插入内容
3.2.6.4.1.1 API
- 插入文本
API | 功能 | 备注 |
---|---|---|
| | |
| | |
| | |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.placeholder_prompt_text()def btn_click_test(self):"""按钮点击测试"""# 获取光标插入内容self.text_cursor()def text_cursor(self):"""文本光标插入方法"""# 光标插入文本tcf = QTextCharFormat()tcf.setToolTip('linfeng')tcf.setFontFamily('隶书')tcf.setFontPointSize(66)tc = self.te.textCursor()tc.insertText('xujie', tcf)tc.insertHtml('<a href="https://www.baidu.com">baidu</a>')def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
- 插入图片
API | 参数 | 备注 |
---|---|---|
| | ②xxx.setWidth(20) ③xxx.setHeight(20) |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.placeholder_prompt_text()def btn_click_test(self):"""按钮点击测试"""# 获取光标插入内容self.text_cursor()def text_cursor(self):"""文本光标插入方法"""# 光标插入图片tc = self.te.textCursor()tif = QTextImageFormat()tif.setName('cats1.ico')tif.setWidth(100)tif.setHeight(100)tc.insertImage(tif)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
- 插入句子
API | 参数 | 备注 |
---|---|---|
| | ②fromPlainText(str) |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.placeholder_prompt_text()self.text_content_settings()def btn_click_test(self):"""按钮点击测试"""# 获取光标插入内容self.text_cursor()def text_cursor(self):"""文本光标插入方法"""# 光标插入文本片段tc = self.te.textCursor()tdf = QTextDocumentFragment.fromHtml('<h1>xujie</h1>')tdf1 = QTextDocumentFragment.fromPlainText('<h1>xujie</h1>')tc.insertFragment(tdf)tc.insertFragment(tdf1)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
- 插入列表
API | 功能 |
---|---|
| |
| |
| |
| |
参数 | 枚举 | 功能 |
---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.placeholder_prompt_text()def btn_click_test(self):"""按钮点击测试"""self.text_cursor()def text_cursor(self):"""文本光标插入方法"""# 插入列表tc = self.te.textCursor()# tl = tc.insertList(QTextListFormat.ListCircle)# 创建列表# tc.createList(QTextListFormat.ListCircle)tlf = QTextListFormat()tlf.setIndent(2)tlf.setNumberPrefix("<<")tlf.setNumberSuffix(">>")tlf.setStyle(QTextListFormat.ListDecimal)tc.createList(tlf)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
5. 插入表格:insertTable(int rows, int columns, QTextTableFormat) -> QTextTable
参数 | 枚举 | 功能 |
---|---|---|
| | |
| | |
| | |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.placeholder_prompt_text()def btn_click_test(self):"""按钮点击测试"""self.text_cursor()def text_cursor(self):"""文本光标插入方法"""# 插入表格tc = self.te.textCursor()ttf = QTextTableFormat()ttf.setAlignment(Qt.AlignCenter)ttf.setCellPadding(1)ttf.setCellSpacing(0.1)table = tc.insertTable(5, 3, ttf)table.appendColumns(4)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
6. 插入文本块
API | 功能 |
---|---|
| |
| |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.placeholder_prompt_text()def btn_click_test(self):"""按钮点击测试"""self.text_cursor()def text_cursor(self):"""文本光标插入方法"""# 插入文本块tc = self.te.textCursor()tbf = QTextBlockFormat()tbf.setAlignment(Qt.AlignCenter)tbf.setLeftMargin(100)tbf.setIndent(2)tcf = QTextCharFormat()tcf.setFontFamily('隶书')tcf.setFontItalic(True)tcf.setFontPointSize(50)tc.insertBlock(tbf, tcf)self.te.setFocus()def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
7. 插入框架:insertFrame(QTextFrameFormat) -> QTextFrame
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.placeholder_prompt_text()def btn_click_test(self):"""按钮点击测试"""# 获取光标插入内容self.text_cursor()def text_cursor(self):"""文本光标插入方法"""# 插入框架tc = self.te.textCursor()tff = QTextFrameFormat()tff.setBorder(10)tff.setBorderBrush(QColor(100, 50, 50))tff.setRightMargin(50)tc.insertFrame(tff)# 打印文档框架,文本框架中嵌套文本框架doc = self.te.document()root_from = doc.rootFrame()root_from.setFrameFormat(tff)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.2.6.4.1.2 应用场景
插入指定格式的内容元素
3.2.6.4.2 设置和合并格式
API | 功能 |
---|---|
| |
| |
| |
| |
| |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.placeholder_prompt_text()self.text_content_settings()self.format_setting_merging()def btn_click_test(self):# 设置格式合并self.format_setting_merging()def format_setting_merging(self):"""设置格式合并"""tc = self.te.textCursor()tcf = QTextCharFormat()tcf.setFontFamily('幼圆')tcf.setFontPointSize(30)tcf.setFontOverline(True)tcf.setFontUnderline(True)tc.setBlockCharFormat(tcf)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.2.6.4.3 获取内容和格式相关
3.2.6.4.3.1 API
API | 功能 |
---|---|
| |
| |
| |
| |
| |
| |
| |
| |
3.2.6.4.3.2 应用场景
通过文本光标获取当前所在的内容和格式信息
3.2.6.4.4 文本选中和清空
通过文本光标对象来操作输入框内容
名称 | API | 功能 |
---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
参数 | API | 功能 |
---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
3.2.6.4.5 删除内容
删除单个字符
API | 功能 |
---|---|
| |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.placeholder_prompt_text()def btn_click_test(self):"""按钮点击测试"""# 文本字符的删除self.deletion_of_text_characters()def deletion_of_text_characters(self):"""文本字符的删除"""tc = self.te.textCursor()tc.deleteChar()self.te.setFocus()def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.2.6.4.6 文本光标位置判定获取
获取和判定光标的位置
API | 功能 |
---|---|
| |
| |
| |
| |
| |
| |
| |
# -*- coding: utf-8 -*-
# @Time: 2025/1/10 16:20
# @File: 001-QTextEdit使用.py
# @Author: xujie.qu
# @Des:
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)def btn_click_test(self):"""按钮点击测试"""# 位置相关self.position_dependent()def position_dependent(self):"""位置相关"""tc = self.te.textCursor()print('是否在段尾:', tc.atBlockEnd())print('是否在段首:', tc.atBlockStart())print('是否在文档末尾:', tc.atEnd())print('是否在文档开始:', tc.atStart())print('在第几列:', tc.columnNumber())print('光标位置:', tc.position())print('光标在文本块的位置:', tc.positionInBlock())def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.2.6.4.7 开始和结束编辑标识
- 指示文档上的编辑操作块的开始,
- 该操作应从撤消/重做的角度显示为单个操作。
API | 功能 |
---|---|
| |
| |
3.3 自动格式化
3.3.1 API
- setAutoFormatting(QTextEdit.AutoFormatting)
- autoFormatting() -> QTextEdit.AutoFormatting
3.3.2 参数QTextEdit.AutoFormatting
API | 功能 |
---|---|
| |
| |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)def btn_click_test(self):"""按钮点击测试"""self.automatic_formatting()def automatic_formatting(self):"""设置自动格式化"""self.te.setAutoFormatting(QTextEdit.AutoBulletList)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.3.3 应用场景
输入一些特定字符, 会转换成为对应的效果
3.4 软换行模式
3.4.1 API
API | 功能 |
---|---|
| |
| |
| |
| |
3.4.2 补充
名称 | API | 功能 |
---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
3.4.3 应用场景
设置当用户输入内容过多时, 是否进行软换行, 以及如何进行软换行
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)def btn_click_test(self):"""设置软换行模式"""self.soft_line_break_mode()def soft_line_break_mode(self):"""设置软换行模式"""# 设置没有软换行self.te.setLineWrapMode(QTextEdit.NoWrap)# 设置软换行像素为100px# self.te.setLineWrapMode(QTextEdit.FixedPixelWidth)# self.te.setLineWrapColumnOrWidth(100)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.5 覆盖模式
3.5.1 API
API | 功能 |
---|---|
| |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)def btn_click_test(self):"""设置软换行模式"""self.q_text_edit_test()def q_text_edit_test(self):"""设置覆盖模式"""self.te.setOverwriteMode(True)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.5.2 应用场景
切换覆盖模式, 修改文本内容
3.6 对齐方式
3.6.1 API
名称 | API | 功能 |
---|---|---|
| | 右对齐:Qt.AlignRight 居中对齐:Qt.AlignCenter |
3.6.2 应用场景
设置当前段落的对齐方式
3.6.3 案例
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)def btn_click_test(self):"""设置对齐方式"""self.q_text_edit_test()def q_text_edit_test(self):"""设置对齐方式"""self.te.setAlignment(Qt.AlignCenter)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.7 字体格式
3.7.1 API
名称 | API | 功能 |
---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)def btn_click_test(self):"""设置字体格式"""self.q_text_edit_test()def q_text_edit_test(self):"""设置字体格式"""# 查看字体格式# QFontDialog.getFont()# 设置字体家族self.te.setFontFamily('幼圆')# 设置字体粗细self.te.setFontWeight(QFont.Black)# 设置字体倾斜self.te.setFontItalic(True)# 设置字体大小self.te.setFontPointSize(30)# 设置字体效果self.te.setFontUnderline(True)# 设置统一字体格式# font = QFont()# font.setStrikeOut(True)# self.te.setCurrentFont(font)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.8 颜色设置
修改文本前景色以及背景色
名称 | API | 功能 |
---|---|---|
| | |
| | |
| | |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)def btn_click_test(self):"""设置字体颜色"""self.q_text_edit_test()def q_text_edit_test(self):"""设置字体颜色"""# 背景颜色self.te.setTextBackgroundColor(QColor(200, 10, 10))# 字体颜色self.te.setTextColor(QColor(10, 200, 10))def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.9 当前的字符格式
- 针对于部分字符, 设置特定的格式
- 将新文本插入格式时使用的char格式。
- 如果编辑器有选择的文本内容,则char格式直接应用于选择
API | 功能 |
---|---|
| |
| |
| |
3.9.1 QTextCharFormat
3.9.1.1 描述
- 提供了一种字符格式信息
- 文档中文本的字符格式指定文本的可视属性,以及有关其在超文本文档中的角色的信息
3.9.1.2 常用功能作用
3.9.1.2.1 字体
名称 | 设置API | 获取API |
---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
3.9.1.2.3 QFont字体大小写参数
参数 | 功能 |
---|---|
| |
| |
| |
| |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)def btn_click_test(self):"""设置字符格式"""self.q_text_edit_test()def q_text_edit_test(self):"""设置字符格式"""tcf = QTextCharFormat()tcf.setFontFamily('黑体')tcf.setFontPointSize(20)tcf.setFontCapitalization(QFont.Capitalize)tcf.setForeground(QColor(100, 200, 150))self.te.setCurrentCharFormat(tcf)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.10 常用编辑操作
常用内容文档编辑操作
API | 功能 |
---|---|
| |
| |
| |
| |
| |
| |
| |
3.11 查找
find(str, options: Union[QTextDocument.FindFlags, QTextDocument.FindFlag] = QTextDocument.FindFlags()) -> bool
参数 | 功能 |
---|---|
| |
| |
| |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)def btn_click_test(self):"""常用编辑操作"""self.q_text_edit_test()def q_text_edit_test(self):"""常用编辑操作"""# self.te.cut()# self.te.paste()# self.te.selectAll()# self.te.setFocus()# 查找self.te.find('123', QTextDocument.FindBackward)self.te.setFocus()def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
3.12 滚动
scrollToAnchor(p_str)
3.12.1 锚点设置
<a name=“锚点名称” href=“#锚点内容”> xxx </a>
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.te.insertHtml("123"*300 + "<a name='xj' href='#xujie'>linfeng</a>" + "**xx"*200)def btn_click_test(self):"""滚动到锚点"""self.q_text_edit_test()def q_text_edit_test(self):"""滚动到锚点"""self.te.scrollToAnchor('xj')def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
点击按钮会滚动到设置的锚点的位置
3.13 只读设置
- setReadOnly(self, bool)
- isReadOnly() -> bool
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.te.insertHtml("123"*300 + "<a name='xj' href='#xujie'>linfeng</a>" + "**xx"*200)def btn_click_test(self):"""只读设置"""self.q_text_edit_test()def q_text_edit_test(self):"""只读设置"""self.te.setReadOnly(True)self.te.insertPlainText('xujie')def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
点击按钮之后,用户界面不可以输入内容,但是从代码可以增加内容
3.14 tab控制
名称 | API | 功能 |
---|---|---|
| | |
| | |
| | |
| | |
| | |
from PyQt5.Qt import *import sysclass Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = QTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.te.insertHtml("123"*300 + "<a name='xj' href='#xujie'>linfeng</a>" + "**xx"*200)def btn_click_test(self):"""tab键位设置"""self.q_text_edit_test()def q_text_edit_test(self):"""tab键位设置"""self.te.setTabChangesFocus(True)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
点击按钮之后,使用tab键切换焦点
3.15 锚点获取
返回位置pos处的锚点的引用,如果该点处不存在锚点,则返回空字符串
- anchorAt(QPoint) -> str
3.15.1 案例
单击超链接后, 打开对应的网页
补充: QDesktopServices.openUrl(QUrl(urlString))----打开指定链接地址
from PyQt5.Qt import *import sysclass MyTextEdit(QTextEdit):def mousePressEvent(self, e):link_str = self.anchorAt(e.pos())if len(link_str) > 0:QDesktopServices.openUrl(QUrl(link_str))class Window(QWidget):def __init__(self):"""初始化函数"""super().__init__()self.setWindowTitle('QTextEdit使用')self.resize(500, 500)self.initUI()def initUI(self):"""初始化文本编辑器"""# 设计一个文本编辑器self.te = MyTextEdit(self)self.te.move(50, 50)self.te.resize(300, 300)self.te.setStyleSheet('background-color: cyan;')# 设计一个按钮self.btn = QPushButton(self)self.btn.move(10, 10)self.btn.setText('点击按钮')self.btn.clicked.connect(self.btn_click_test)self.te.insertHtml("123"*300 + "<a href='https://www.baidu.com'>linfeng</a>" + "**xx"*200)def btn_click_test(self):"""tab键位设置"""self.q_text_edit_test()def q_text_edit_test(self):"""tab键位设置"""self.te.setTabChangesFocus(True)def placeholder_prompt_text(self):"""占位提示符"""self.te.setPlaceholderText('QTextEdit...')if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())
4. 信号
API | 功能 |
---|---|
| |
| |
| |
| |
| |
| |
| |