PyQt5之QTextEdit对象

简介

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

HTML文本

# 设置
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  # 在每行文字的左侧添加一个圆圈

PyQt5之QTextEdit对象_第1张图片

QTextListFormat.ListCircle  # 在每行文字的左侧添加一个空的圆圈

PyQt5之QTextEdit对象_第2张图片

QTextListFormat.ListSquare  # 在每行文字的左侧添加一个方块

PyQt5之QTextEdit对象_第3张图片

QTextListFormat.ListDecimal  # 在每行文字的左侧添加十进制值按升序排列

PyQt5之QTextEdit对象_第4张图片

QTextListFormat.ListLowerAlpha  # 在每行文字的左侧添加小写拉丁字符按字母顺序排列

PyQt5之QTextEdit对象_第5张图片

QTextListFormat.ListUpperAlpha  # 在每行文字的左侧添加大写拉丁字符按字母顺序排列

PyQt5之QTextEdit对象_第6张图片

QTextListFormat.ListLowerRoman  # 在每行文字的左侧添加小写罗马数字(仅支持最多4999项)

PyQt5之QTextEdit对象_第7张图片

QTextListFormat.ListUpperRoman  # 在每行文字的左侧添加大写罗马数字(仅支持最多4999项)

PyQt5之QTextEdit对象_第8张图片

# 插入表格
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)

PyQt5之QTextEdit对象_第9张图片

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

PyQt5之QTextEdit对象_第10张图片

# QTextTableFormat对象的常用方法
setAlignment(self, Union, Qt_Alignment=None, Qt_AlignmentFlag=None)
  对齐方式
setCellPadding(self, p_float)
  内边距
setCellSpacing(self, p_float)
  外边距
setColumnWidthConstraints(self, Iterable, QTextLength=None)
  设置列宽

列表的边距说明
PyQt5之QTextEdit对象_第11张图片

# 插入文本块

自动格式化

自动格式化指的是,当用户输入特定字符时。会转化为特定的效果

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)

PyQt5之QTextEdit对象_第12张图片

字体设置

# 背景颜色
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)
  撤销可用时

你可能感兴趣的:(PyQt,python,pyqt,gui)