6.10 QTextCursor多行文本框文本光標文本塊和字符格式設置


一、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_())


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM