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]