一、QTextCursor多行文本框文本光標文本塊和字符格式設置
1.代碼
from PyQt5.Qt import *
import sys
class Window(QWidget) :
def __init__(self) :
super().__init__()
self.setWindowTitle("QTextEdit - PyQt5中文網")
self.resize(600, 500)
self.func_list()
def func_list(self) :
self.func()
def func(self) :
self.qte = QTextEdit('111', self)
self.qte.move(100, 100)
self.qte.resize(250, 250)
self.qte.setStyleSheet('background-color:green')
self.qte.setFrameStyle(QFrame.Box | QFrame.Raised)
self.qte.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.qte.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.btn = QPushButton('按 鈕', self)
self.btn.move(120, 50)
self.btn.resize(70, 30)
self.btn.pressed.connect(self.text_cur)
# ==============內容設置=============== # 代碼分割線 - 開始
# 文本光標完成內容和格式設置
def text_cur(self) :
# 文本光標設置合並格式
# setBlockCharFormat
# setBlockFormat
# setCharFormat
# mergeBlockCharFormat
# mergeBlockFormat
# mergeCharFormat
qtc = self.qte.textCursor()
tcf = QTextCharFormat()
tcf.setFontPointSize(50)
qtc.setBlockCharFormat(tcf) # 設置塊內字符格式
# qtc.setBlockFormat(tcf) # 設置塊格式,傳入對象QTextBlockFormat
# qtc.setCharFormat(tcf) # 設置選中字符格式,傳入對象QTextCharFormat
# 以下三個可以實現格式的合並,同時調用兩種格式,接個172和173行測試
# qtc.mergeBlockCharFormat(tcf) # 合並當前塊的字符格式,傳入對象QTextCharFormat
# qtc.mergeBlockFormat(tcf) # 合並當前塊格式,傳入對象QTextBlockFormat
tcf2 = QTextCharFormat()
tcf2.setFontStrikeOut(True)
# qtc.mergeCharFormat(tcf2) # 合並當前字符格式,傳入對象QTextCharFormat,上面設置好的格式和這段代碼中設置的格式可以疊加展現
# 獲取內容和格式
qtc = self.qte.textCursor()
qtc.block() # 獲取光標所在文本塊
qtc.block().text() # 獲取光標所在文本塊的文本內容
qtc.block().blockNumber() # 獲取光標所在文本塊的段落編號
# 文本的選中和清除
qtc = self.qte.textCursor()
# qtc.setPosition(3)
# qtc.setPosition(3, QTextCursor.KeepAnchor)
qtc.movePosition(QTextCursor.StartOfLine, QTextCursor.KeepAnchor, 1)
qtc.select(QTextCursor.BlockUnderCursor)
self.qte.setTextCursor(qtc)
self.qte.setFocus()
# 獲取文本選中的內容
qtc.selectedText() # 獲取當前選中文本內容
qtc.selection() # 獲取當前選中文本文檔
qtc.selectedTableCells() # 獲取當前選中表格
# 選中位置獲取
qtc.selectionStart() # 獲取光標起始和結束的位置
qtc.clearSelection() # 取消選中文本,需要反向設置光標
self.qte.setTextCursor(qtc) # 取消選中文本,需要反向設置光標
# 選中文本移除
qtc.removeSelectedText()
# 刪除內容,不必要選中
qtc = self.qte.textCursor()
qtc.deleteChar() # 刪除一個字符,光標后面的字符,如果有選中文本,直接刪除選中文本
qtc.deletePreviousChar() # 刪除一個字符,光標前面的字符,如果有選中文本,直接刪除選中文本
# 文本光標的位置獲取
qtc = self.qte.textCursor()
qtc.atBlockEnd() # 判斷光標是否在段落結尾,相對於文本快
qtc.atEnd() # 判斷光標是否在文檔結尾,相對於文檔
qtc.columnNumber() # 在第幾列
qtc.positionInBlock() # 咋子文本快中的位置
'''
# 開始和結束編輯標識
qtc = self.qte.textCursor()
QTextCursor
QTextCharFormat
qtc.beginEditBlock()
qtc.insertText('aaa')
qtc.insertBlock() # 類似於換行
qtc.insertText('bbb')
qtc.insertBlock()
qtc.insertText('ccc')
qtc.insertBlock()
qtc.endEditBlock()
qtc.insertText('ddd')
qtc.insertBlock()
'''
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())