pyqt5-QPlainTextEdit

1、介绍

这是pyqt的纯文本多行输入组件。

2、类和初始化

class QPlainTextEdit(QAbstractScrollArea):
    """
    QPlainTextEdit(parent: QWidget = None)
    QPlainTextEdit(str, parent: QWidget = None)
    """
    def __init__(self, *__args):
        pass
  • 继承关系:QPlainTextEdit->QAbstractScrollArea->QFrame->QWidget

快速整理:

QPlainTextEdit(parent: typing.Optional[QWidget] = None)
QPlainTextEdit(text: str, parent: typing.Optional[QWidget] = None)
anchorAt(self, pos: QPoint) -> str
appendHtml(self, html: str)
appendPlainText(self, text: str)
backgroundVisible(self) -> bool
blockBoundingGeometry(self, block: QTextBlock) -> QRectF
blockBoundingRect(self, block: QTextBlock) -> QRectF
blockCount(self) -> int
canInsertFromMimeData(self, source: QMimeData) -> bool
canPaste(self) -> bool
centerCursor(self)
centerOnScroll(self) -> bool
clear(self)
contentOffset(self) -> QPointF
copy(self)
createMimeDataFromSelection(self) -> QMimeData
createStandardContextMenu(self) -> QMenu
createStandardContextMenu(self, position: QPoint) -> QMenu
currentCharFormat(self) -> QTextCharFormat
cursorForPosition(self, pos: QPoint) -> QTextCursor
cursorRect(self, cursor: QTextCursor) -> QRect
cursorRect(self) -> QRect
cursorWidth(self) -> int
cut(self)
document(self) -> QTextDocument
documentTitle(self) -> str
ensureCursorVisible(self)
extraSelections(self) -> List[QTextEdit.ExtraSelection]
find(self, exp: str, options: Union[QTextDocument.FindFlags, QTextDocument.FindFlag] = QTextDocument.FindFlags()) -> bool
find(self, exp: QRegExp, options: Union[QTextDocument.FindFlags, QTextDocument.FindFlag] = QTextDocument.FindFlags()) -> bool
find(self, exp: QRegularExpression, options: Union[QTextDocument.FindFlags, QTextDocument.FindFlag] = QTextDocument.FindFlags()) -> bool
firstVisibleBlock(self) -> QTextBlock
focusNextPrevChild(self, next: bool) -> bool
getPaintContext(self) -> QAbstractTextDocumentLayout.PaintContext
inputMethodQuery(self, property: Qt.InputMethodQuery) -> Any
inputMethodQuery(self, query: Qt.InputMethodQuery, argument: Any) -> Any
insertFromMimeData(self, source: QMimeData)
insertPlainText(self, text: str)
isReadOnly(self) -> bool
isUndoRedoEnabled(self) -> bool
lineWrapMode(self) -> QPlainTextEdit.LineWrapMode
loadResource(self, type: int, name: QUrl) -> Any
maximumBlockCount(self) -> int
mergeCurrentCharFormat(self, modifier: QTextCharFormat)
moveCursor(self, operation: QTextCursor.MoveOperation, mode: QTextCursor.MoveMode = QTextCursor.MoveAnchor)
overwriteMode(self) -> bool
paste(self)
placeholderText(self) -> str
print(self, printer: QPagedPaintDevice)
print_(self, printer: QPagedPaintDevice)
redo(self)
scrollContentsBy(self, dx: int, dy: int)
selectAll(self)
setBackgroundVisible(self, visible: bool)
setCenterOnScroll(self, enabled: bool)
setCurrentCharFormat(self, format: QTextCharFormat)
setCursorWidth(self, width: int)
setDocument(self, document: QTextDocument)
setDocumentTitle(self, title: str)
setExtraSelections(self, selections: Iterable[QTextEdit.ExtraSelection])
setLineWrapMode(self, mode: QPlainTextEdit.LineWrapMode)
setMaximumBlockCount(self, maximum: int)
setOverwriteMode(self, overwrite: bool)
setPlaceholderText(self, placeholderText: str)
setPlainText(self, text: str)
setReadOnly(self, ro: bool)
setTabChangesFocus(self, b: bool)
setTabStopDistance(self, distance: float)
setTabStopWidth(self, width: int)
setTextCursor(self, cursor: QTextCursor)
setTextInteractionFlags(self, flags: Union[Qt.TextInteractionFlags, Qt.TextInteractionFlag])
setUndoRedoEnabled(self, enable: bool)
setWordWrapMode(self, policy: QTextOption.WrapMode)
tabChangesFocus(self) -> bool
tabStopDistance(self) -> float
tabStopWidth(self) -> int
textCursor(self) -> QTextCursor
textInteractionFlags(self) -> Qt.TextInteractionFlags
toPlainText(self) -> str
undo(self)
wordWrapMode(self) -> QTextOption.WrapMode
zoomIn(self, range: int = 1)
zoomOut(self, range: int = 1)
---------------
changeEvent(self, e: QEvent)
contextMenuEvent(self, e: QContextMenuEvent)
dragEnterEvent(self, e: QDragEnterEvent)
dragLeaveEvent(self, e: QDragLeaveEvent)
dragMoveEvent(self, e: QDragMoveEvent)
dropEvent(self, e: QDropEvent)
event(self, e: QEvent) -> bool
focusInEvent(self, e: QFocusEvent)
focusOutEvent(self, e: QFocusEvent)
inputMethodEvent(self, a0: QInputMethodEvent)
keyPressEvent(self, e: QKeyEvent)
keyReleaseEvent(self, e: QKeyEvent)
mouseDoubleClickEvent(self, e: QMouseEvent)
mouseMoveEvent(self, e: QMouseEvent)
mousePressEvent(self, e: QMouseEvent)
mouseReleaseEvent(self, e: QMouseEvent)
paintEvent(self, e: QPaintEvent)
resizeEvent(self, e: QResizeEvent)
showEvent(self, a0: QShowEvent)
timerEvent(self, e: QTimerEvent)
wheelEvent(self, e: QWheelEvent)
---------------
blockCountChanged(self, newBlockCount: int) [signal]
copyAvailable(self, b: bool) [signal]
cursorPositionChanged(self) [signal]
modificationChanged(self, a0: bool) [signal]
redoAvailable(self, b: bool) [signal]
selectionChanged(self) [signal]
textChanged(self) [signal]
undoAvailable(self, b: bool) [signal]
updateRequest(self, rect: QRect, dy: int) [signal]

3、常用属性

    NoWrap = 0
    WidgetWidth = 1

4、方法

(1)setPlainText

  • 设置输入文本,即相当于用户直接输入,参数类型str

(2)toPlainText

  • 获取输入文本,返回类型str

(3)insertPlainText

  • 在光标处插入文本,参数类型str
  • 插入内容在光标之前

(4)appendPlainText

  • 拼接纯文本,参数类型为str
  • 如果此时整体文本为空字符串,直接在首行输入参数。如果不为空字符串,则在整体文本的末尾,先换行再追加参数指定的文本。

(5)appendHtml

  • 拼接html代码的文本,参数是str类型
  • 参数可以是包含html元素,组件会以html样式进行显示。但是并不会执行,比如a超链接,会显示为其html样式,但是不会点击打开地址。
  • 参数中可以包含一个或多个html元素的代码,也可以包含非html代码。即不是必须以树的形式设置,比如”<span style=color:red>样式</span>abc”
  • 需要注意,使用appendHtml方法,作为参数的文本会按照html解析多个连续空白符为一个空格,即使不是html代码部分的文本。解决办法是对整体添加pre标签
  • toPlainText获取纯文本,是不包含html代码的,即只获取显示的字符。
  • 和appendPlainText类似,如果此时整体文本为空字符串,直接在首行输入参数。如果不为空字符串,则在整体文本的末尾,先换行再追加参数指定的文本。
  • 不能滥用pre标签,因为其是块级元素,<pre>abc</pre><pre>def</pre>,abc和def之间会换行。
s = """abc   d
    d<span style=color:red>fd  
   ff
</span>"""
appendHtml("<pre>"+s+"</pre>")

(6)setPlaceholderText

  • 设置占位提示文本,参数类型是str

(7)placeholderText

  • 获取占位提示文本,返回类型str

(8)setReadOnly

  • 设置是否只读,参数类型bool

(9)isReadOnly

  • 获取是否只读,返回类型bool

(10)clear

  • 清除所有文本

(11)paste

  • 在光标处粘贴剪切板内容

(12)copy

  • 复制选中内容到剪切板,如果没有选中,则不进行任何操作

(13)cut

  • 剪切选中内容到剪切板,如果没有选中,则不进行任何操作

(14)selectAll

  • 选中全部文本

(15)setLineWrapMode

  • 设置换行模式

(16)lineWrapMode

  • 获取换行模式,默认是为1,表示单词需要完整的在一行,如果末尾遇到长单词,会换行输出。也可以使用QPlainTextEdit.WidgetWidth作为值设置
  • 设置为0,会默认不进行换行,输入时增加水平的滚动条,可以连续输入,直到输入换行,enter键。也可以使用QPlainTextEdit.NoWrap作为值设置

(17)blockCount

  • 返回文本的文本快数,也可以说是段落数,根据换行符划分,int类型
  • 最小为1。即空文本时或者只有首行时,都是为1

(18)setMaximumBlockCount

  • 设置最大的文本段落数,参数类型为int
  • 如果设置为n,则整体文本只能最多有n-1个换行符
  • 连续输入时,有多个换行符,如果超过指定的范围,那么文本输入框会保留后面的最大允许的段落,前面的段落会被删除

(19)maximumBlockCount

  • 获取允许的最大的文本段落数,返回类型为int。
  • 默认是为0,表示无穷大

(20)document

  • 返回一个QTextDocument类型对象,可以进行操作

(21)setTextCursor

  • 设置文本光标,实际可以实现跳转到指定光标处,参数为QTextCursor类型
t = QTextCursor()
t.setPosition(self.search_index_list[self.search_index_this][0])
self.window.plainTextEdit.setTextCursor(t)
  • 这样写是错误的,setTextCursor方法调用后,虽然不会报错,但会导致文本框无法选择文本和插入编辑,也不显示光标
cur = self.window.plainTextEdit.textCursor()
cur.setPosition(self.search_index_list[self.search_index_this][0])
self.window.plainTextEdit.setTextCursor(cur)
self.window.plainTextEdit.setFocus()
  • 需要textCursor方法的返回对象,进行操作并重新使用setTextCursor方法,才能够使光标跳转到指定点
  • setFocus是聚焦,显示光标的位置

(22)textCursor

textCursor(self) -> QTextCursor
  • 选中对象,可以进一步获取选中的开始索引、结束索引和选中文本
  • 如果未选中,则开始索引和结束索引相同,均为当前光标索引位置,选中文本为空字符串

5、事件

blockCountChanged(self, int) [signal]
cursorPositionChanged(self) [signal]
selectionChanged(self) [signal]
textChanged(self) [signal]
posted @ 2023-04-16 23:41  挖洞404  阅读(356)  评论(0编辑  收藏  举报