QTextEdit是一个高级的WYSIWYG(what you see is what you get)查看器,支持使用HTML样式标签的富文本格式;
它经过优化,可以处理大型文档并快速响应用户输入;适用于段落和字符;文本编辑可以加载纯文本和富文本文件,以显示图像、列表和表格;
继承自QAbstractScrollArea
QTextEdit(parent: QWidget = None)
QTextEdit(str, parent: QWidget = None)
# 设置
setPlaceholderText(str)
# 获得
placeholderText() -> str
# 设置
setPlainText(str)
# 插入
insertPlainText(str)
# 获取
toPlainText() -> str
# 设置
setHtml(str)
# 插入
insertHtml(str)
# 获取
toHtml() -> str
setText(str)
append(str)
clear()
通过文本光标也可以实现以上的文本操作,整个文本编辑器,其实就是为编辑这个文本文档提供了一个可视化的界面。可以简单的理解成一个word文档,使用word软件打开了这个文档,用户就可以在其中任意的编辑;
获取文档的方法:
document() -> QTextDocument
# QTextDocument对象中有对文本编辑的相关方法
通过文本光标的方法修改文本:
# 获取文本光标方法
textCursor() # 该方法返回一个光标对象
# QTextCursor对象中有对文本编辑的相关方法
# 代码示例(创建光标对象)
# 通过创建的光标对象进行相关的文本编辑
window = QWidget()
window.resize(500, 200)
te = QTextEdit(window)
tc = te.textCursor()
print(tc) -> <PyQt5.QtGui.QTextCursor object at 0x0000000002FAE4A8>
# 插入文本
insertText(str) # 插入文本(普通文本)
insertText(QString text, QTextCharFormat format) # 插入文本, 带格式
# QTextCharFormat,针对于部分字符的格式描述
insertHtml(html_str) # 插入HTML 字符串
# 插入图片
insertImage(QTextImageFormat)
# 示例
tf = QTextImageFormat()
tf.setName("xxx.png")
tf.setWidth(20)
tf.setHeight(20)
te.insertImage(tf)
# 插入句子
insertFragment(QTextDocumentFragment )
# 示例
# QTextDocumentFragment对象的创建方法
# 第一种
td = QTextDocumentFragment()
# 第二种
QTextDocumentFragment.fromHtml(html_str)
# 第三种
QTextDocumentFragment.fromPlainText(str)
# 插入列表
# 在当前位置插入一个新块,并使其成为具有给定格式的新创建列表的第一个列表项。返回创建的列表
insertList(QTextListFormat) -> QTextList
insertList(QTextListFormat.Style) -> QTextList
# 使用insertList(QTextListFormat)方法插入列表
# QTextListFormat对象
# 创建QTextListFormat对象
tlf = QTextListFormat()
# 对象中包含了很多方法,例如
setIndent(int) # 首行缩进字符数
setNumberPrefix(str) # 添加前缀
setNumberSuffix(str) # 添加后缀
setStyle(QTextListFormat.Style)
# 代码示例(创建列表对象)
window = QWidget()
window.resize(500, 200)
te = QTextEdit(window)
tc = te.textCursor() # 创建一个TextList对象
# QTextListFormat.Style枚举值
QTextListFormat.ListDisc # 在每行文字的左侧添加一个圆圈
QTextListFormat.ListCircle # 在每行文字的左侧添加一个空的圆圈
QTextListFormat.ListSquare # 在每行文字的左侧添加一个方块
QTextListFormat.ListDecimal # 在每行文字的左侧添加十进制值按升序排列
QTextListFormat.ListLowerAlpha # 在每行文字的左侧添加小写拉丁字符按字母顺序排列
QTextListFormat.ListUpperAlpha # 在每行文字的左侧添加大写拉丁字符按字母顺序排列
QTextListFormat.ListLowerRoman # 在每行文字的左侧添加小写罗马数字(仅支持最多4999项)
QTextListFormat.ListUpperRoman # 在每行文字的左侧添加大写罗马数字(仅支持最多4999项)
# 插入表格
insertTable(int rows, int columns) -> QTextTable
insertTable(int rows, int columns, QTextTableFormat) -> QTextTable
# insertTable(int rows, int columns) -> QTextTable
# 代码示例
window = QWidget()
window.resize(500, 200)
te = QTextEdit(window)
tc = te.textCursor()
tc.insertTable(5, 7)
# insertTable(int rows, int columns, QTextTableFormat) -> QTextTable
# 在创建是同时设置表格样式
# QTextTableFormat对象
window = QWidget()
window.resize(500, 200)
te = QTextEdit(window)
tc = te.textCursor()
ttf = QTextTableFormat()
ttf.setAlignment(Qt.AlignRight)
ttf.setCellPadding(6)
ttf.setCellSpacing(3)
tc.insertTable(3, 5, ttf)
# QTextTableFormat对象的常用方法
setAlignment(self, Union, Qt_Alignment=None, Qt_AlignmentFlag=None)
对齐方式
setCellPadding(self, p_float)
内边距
setCellSpacing(self, p_float)
外边距
setColumnWidthConstraints(self, Iterable, QTextLength=None)
设置列宽
# 插入文本块
自动格式化指的是,当用户输入特定字符时。会转化为特定的效果
setAutoFormatting(QTextEdit.AutoFormatting)
# QTextEdit.AutoFormatting枚举值
QTextEdit.AutoNone
不要做任何自动格式化。
QTextEdit.AutoBulletList
自动创建项目符号列表(例如,当用户在最左侧列中输入星号('*')时,或在现有列表项中按Enter键。
QTextEdit.AutoAll
应用所有自动格式。目前仅支持自动项目符号列表。
指的是在文本编辑时,当编辑的本文内容超过显示范围时使用什么样的换行模式
# 设置软换行模式
setLineWrapMode(QTextEdit.LineWrapMode)
# 设置单词换行模式
setWordWrapMode(self, QTextOption.WrapMode)
# QTextEdit.LineWrapMode枚举值
QTextEdit.NoWrap
没有软换行, 超过宽度后, 会产生水平滚动条
QTextEdit.WidgetWidth
以控件的宽度为限制,但会保持单词的完整性
QTextEdit.FixedPixelWidth
填充像素宽度
配合
setLineWrapColumnOrWidth(int)
lineWrapColumnOrWidth() -> int
QTextEdit.FixedColumnWidth
填充列的宽度
配合
setLineWrapColumnOrWidth(int)
lineWrapColumnOrWidth() -> int
# QTextOption.WrapMode枚举值
QTextOption.NoWrap
文本根本没有包装。
QTextOption.WordWrap
保持单词完整性
QTextOption.ManualWrap
与QTextOption.NoWrap相同
QTextOption.WrapAnywhere
宽度够了之后, 随意在任何位置换行
QTextOption.WrapAtWordBoundaryOrAnywhere
尽可能赶在单词的边界, 否则就在任意位置换行
指的是在我们在文本中间插入内容时,是否对后面的内容进行覆盖
# 设置覆盖模式
setOverwriteMode(bool)
# 光标宽度设置
setCursorWidth(int)
# 光标矩形设置
cursorRect() -> QRect
# 设置对齐方式
setAlignment(Qt.Alignment)
# Qt.Alignment枚举值
Qt.AlignLeft
Qt.AlignRight
Qt.AlignCenter
# 设置字体家族
setFontFamily(family_str)
# 字体粗细
setFontWeight(int)
# int也可以使用下面的枚举值进行设置
QFont.Thin
QFont.ExtraLight
QFont.Light
QFont.Normal
QFont.Medium
QFont.DemiBold
QFont.Bold
QFont.ExtraBold
QFont.Black
# 设置斜体字
setFontItalic(bool)
# 设置字体尺寸
setFontPointSize(float)
# 设置字体下滑线
setFontUnderline(bool)
# 统一设置QFont进行设置
setCurrentFont(QFont)
# 设置字体设置窗口(可以查看可用字体)
QFontDialog.getFont()
# 代码示例
window = QWidget()
window.resize(500, 200)
te = QTextEdit(window)
btn = QPushButton(window)
btn.setText("字体样式")
btn.move(300, 100)
def set_font():
font = QFontDialog.getFont(window)
btn.clicked.connect(set_font)
# 背景颜色
setTextBackgroundColor(QColor)
# 字体颜色
setTextColor(QColor)
# 字符设置
setCurrentCharFormat(QTextCharFormat)
# 合并字符格式
mergeCurrentCharFormat(QTextCharFormat)
currentCharFormat() -> QTextCharFormat
# QTextCharFormat对象的方法
# 统一设置
setFont(QFont)
font() -> QFont
# 字体家族
setFontFamily(family_str)
fontFamily() -> str
# 字体大小
setFontPointSize(float)
fontPointSize() -> float
# 字体粗细
setFontWeight(int)
fontWeight() -> int
# 字体上划线
setFontOverline(bool)
fontOverline() -> bool
# 字体中划线
setFontStrikeOut(bool)
fontStrikeOut() -> bool
# 字体下划线
setFontUnderline(bool)
fontUnderline() -> bool
# 字体大小写
setFontCapitalization(QFont.Capitalization)
fontCapitalization() -> QFont.Capitalization
# QFont.Capitalization枚举值
QFont.MixedCase
这是正常的文本呈现选项,不应用大写更改。
QFont.AllUppercase
这会改变要以全大写类型呈现的文本。
QFont.AllLowercase
这会改变要以全小写类型呈现的文本。
QFont.SmallCaps
这会改变要以小型大写字母呈现的文本。
QFont.Capitalize
这会将要呈现的文本更改为每个单词的第一个字符作为大写字符。
十四、常用编辑操作
copy()
paste()
canPaste() -> bool
setUndoRedoEnabled(bool)
redo()
undo()
selectAll()
find(str, options: Union[QTextDocument.FindFlags, QTextDocument.FindFlag] = QTextDocument.FindFlags()) -> bool
QTextDocument.FindBackward
向后搜索而不是向前搜索。
QTextDocument.FindCaseSensitively
默认情况下,查找工作区不区分大小写。
指定此选项会将行为更改为区分大小写的查找操作。
QTextDocument.FindWholeWords
使查找匹配仅完整的单词。
textChanged()
文本内容发生改变时, 发射的信号
selectionChanged()
选中内容发生改变时, 发射的信号
cursorPositionChanged()
光标位置发生改变时, 发射的信号
currentCharFormatChanged(QTextCharFormat)
当前额字符格式发生改变时, 发射的信号
copyAvailable(bool yes)
复制可用时
redoAvailable(bool available)
重做可用时
undoAvailable(bool available)
撤销可用时