6.11 QTextEdit多行文字框文字操作
阿新 • • 發佈:2022-03-29
一、QTextEdit多行文字框文字操作
- QTextEdit可以通過游標來操作文字內容和格式等,QTextEdit也可以直接對大多數常見的功能直接設定。這節課就是通過QTextEdit直接操作文字,有自動化格式、換行模式、覆蓋模式等格式操作,還有顏色設定、字元格式、編輯效果等樣式操作。
1.程式碼
from PyQt5.Qt import * import sys class Text_Url(QTextEdit) : def mousePressEvent(self, QMouseEvent) : print(QMouseEvent.pos()) link = self.anchorAt(QMouseEvent.pos()) if len(link) > 0 : QDesktopServices.openUrl(QUrl(link)) return super().mousePressEvent(QMouseEvent) 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 = Text_Url('QTextEdit-多行文字框' * 5, 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.qte.insertHtml("多行文字框" * 20 + "<a href='http://www.bl186.net' name='pyqt5'>PyQt5中文網</a>") 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) : # 1.自動化格式(以*作為觸發) # self.qte.setAutoFormatting(QTextEdit.AutoBulletList) # 2.換行模式設定 # QTextEdit.NoWrap # 不換行,超過寬度後會出現水平滾動條 # QTextEdit.WidgetWidth # 以控制元件寬度為標準,保持單詞完整性 # QTextEdit.FixedColumnWidth # 填充列寬度 # QTextEdit.FixedPixelWidth # 直接設定一行寬度為多少畫素 self.qte.setLineWrapMode(QTextEdit.FixedPixelWidth) # 設定軟換行 self.qte.setLineWrapColumnOrWidth(100) # 配合FixedPixelWidth和FixedColumnWidth # QTextOption.NoWrap # QTextOption.WordWrap # 保持單詞完整性 # QTextOption.ManualWrap # QTextOption.WrapAnywhere # 在任意位置換行 # QTextOption.WrapAtWordBoundaryOrAnywhere # self.qte.setWordWrapMode(QTextOption.WrapMode) # 設定單詞換行模式 # 3.設定覆蓋模式 self.qte.setOverwriteMode(True) #輸入字元會把後面的字元覆蓋掉 # 4.游標設定 self.qte.setCursorWidth(10) #游標本身的寬度 # 5.段落對其方式設定 # Qt.AlignLeft # Qt.AlignRight # Qt.AlignCenter self.qte.setAlignment(Qt.AlignRight) #右對齊 # 6.字型格式設定(字型樣式、字型尺寸、字型效果、統一設定) # QFontDialog.getFont() # self.qte.setFontFamily('站酷快樂體2016修訂版') # self.qte.setFontWeight(5) # # self.qte.setFontPointSize(30) # # self.qte.setFontUnderline(True) # font = QFont() # font.setFamily('站酷快樂體2016修訂版') # font.setOverline(True) # self.qte.setFont(font) # 顏色設定(文字顏色和背景顏色) self.qte.setTextBackgroundColor(QColor(100, 50, 50)) self.qte.setTextColor(QColor(200, 10, 100)) # 設定字元格式 tcf = QTextCharFormat() tcf.setFontFamily('站酷快樂體2016修訂版') tcf.setFontPointSize(30) self.qte.setCurrentCharFormat(tcf) tcf2 = QTextCharFormat() tcf2.setFontUnderline(True) #下劃線 # self.qte.setCurrentCharFormat(tcf2) self.qte.mergeCurrentCharFormat(tcf2) # 常用編輯操作 # copy() # paste() # canPaste() # setUndoRedoEnabled() # redo() # undo() # selectAll() # find() self.qte.copy() #點選按鈕就複製了 self.qte.paste() #已經複製過,點選按鈕就貼上了 # QTextDocument.FindBackward # 從後向前查詢 # QTextDocument.FindCaseSensitively # 區分大小寫操作 # QTextDocument.FindWholeWords # 匹配完整單詞 self.qte.find('文字', QTextDocument.FindBackward) # 只讀設定 self.qte.setReadOnly(True) # Tab控制 self.qte.setTabChangesFocus(True) #True就把tab鍵關閉功能了 self.qte.setTabStopDistance(150) # 點選按鈕之後會自動變化 # 開啟超連結-重寫點選事件 # 可用訊號 # self.qte.textChanged() # 文字內容改變時 # self.qte.selectionChanged() # 選中內容改變時 # self.qte.cursorPositionChanged() # 游標位置改變時 # self.qte.currentCharFormatChanged() # 當前字元發生改變時 # self.qte.copyAvailable() # 複製可用時 # self.qte.redoAvailable() # 重做可用時 # self.qte.undoAvailable() # 撤銷可用時 self.qte.textChanged.connect(self.text_change) #連線對應的槽函式 self.qte.copyAvailable.connect(self.copy_yes) def text_change(self) : print('文字內容改變時') def copy_yes(self, yes) : print('複製可用', yes) if __name__ == '__main__' : app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())