1、QPlainTextEdit簡介
繼承於QAbstractScrollArea
描述與QTextEdit的一些差異見下圖所示。
功能作用的框架如下:
2、功能作用——占位提示文本
(1)框架
(2)功能操作及展示
1 def 占位提示文本(self): 2 self.pte.setPlaceholderText("請輸入你的個人信息") 3 print(self.pte.placeholderText()) # 查看
3、功能作用——只讀設置
(1)框架
(2)功能操作及展示
1 def 只讀設置(self): 2 self.pte.setReadOnly(True) 3 print(self.pte.isReadOnly())
4、功能作用——格式
(1)框架
(2)操作及展示
1 def 格式(self): 2 tcf = QTextCharFormat() 3 tcf.setFontUnderline(True) 4 tcf.setUnderlineColor(QColor(200,100,100)) 5 self.pte.setCurrentCharFormat(tcf)
5、功能作用——轉換行模式
(1)框架
(2)操作及展示
1 def 轉換行模式(self): 2 print(self.pte.lineWrapMode()) 3 self.pte.setLineWrapMode(QPlainTextEdit.NoWrap) # 設置為不換行(水平滾動條)
6、功能作用——覆蓋模式
(1)框架
(2)操作及展示(不覆蓋中文)
1 def 覆蓋模式(self): 2 self.pte.setOverwriteMode(True) 3 print(self.pte.overwriteMode())
7、功能作用——Tab控制
(1)框架
(2)操作及展示
1 def tab控制(self): 2 self.pte.setTabChangesFocus(False) # tab切換焦點 3 self.pte.setTabStopDistance(100)
8、功能作用——文本操作
(1)框架
(2)操作及展示
1 def 文本操作(self): 2 self.pte.setPlainText("明天,你好") 3 self.pte.setPlainText("hello,world!") # 覆蓋掉上面一個 4 self.pte.insertPlainText("不會覆蓋") # 不覆蓋上面的 5 # self.pte.appendPlainText("<a herf='https://www.cnblogs.com/fengxb1213/'>博客</a>") # 普通文本形式 6 self.pte.appendHtml("<a herf='https://www.cnblogs.com/fengxb1213/'>博客</a>") # HTML格式
9、功能作用——塊操作
(1)框架
(2)操作及展示
1 def 塊操作(self): 2 print(self.pte.blockCount()) 3 self.pte.setMaximumBlockCount(3) # 設置最大塊數 4 print(self.pte.toPlainText()) # 查看內容
10、功能作用——常用編輯操作
(1)框架
(2)操作及展示
1 def 常用編輯操作(self): 2 # 有很多類似的操作參考QTextEdit里面的 3 4 # 放大縮小 5 self.pte.zoomIn(5) # 默認為1,大於0放大,小於0縮小 6 # self.pte.zoomOut() # 與zoomIn剛好相反(過期,不建議用)
11、功能作用——滾動
(1)框架
(2)操作及展示
1 def 滾動(self): 2 # self.pte.centerCursor() # 將內容滾動到中間 3 self.pte.ensureCursorVisible() # 確保光標可見 4 self.pte.setFocus()
12、功能作用——光標
(1)框架
QTextCursor.MoveOperation的一些選擇:
(2)操作及展示
1 def 光標操作(self): 2 # tc = self.pte.textCursor() 3 # tc.insertImage("xxx.png") 4 # tc.insertTable(5,6) 5 6 # 在光標位置插入內容 7 # tc = self.pte.cursorForPosition(QPoint(100,60)) 8 # tc.insertText("itlike") 9 10 # 設置光標的寬度 11 # self.pte.setCursorWidth(20) 12 13 # 光標移動(參考之前的) 14 self.pte.moveCursor(QTextCursor.End,QTextCursor.KeepAnchor) # 光標移動到末尾並選中內容
13、信號
(1)框架
(2)操作及展示
1 def 信號的操作(self): 2 # self.pte.textChanged.connect(lambda :print("內容發生了改變")) 3 # self.pte.cursorPositionChanged.connect(lambda :print("光標位置發生了改變")) 4 # self.pte.blockCountChanged.connect(lambda val:print("塊的個數發生了改變",val)) 5 # self.pte.selectionChanged.connect(lambda :print("選中的內容發生了改變",self.pte.textCursor().selectedText())) 6 # self.pte.modificationChanged.connect(lambda val:print("修改的狀態發生了改變",val)) 7 # doc = self.pte.document() 8 # doc.setModified(False) 9 self.pte.updateRequest.connect(lambda rect,dy:print("內容區域更新",rect,dy))
1 # *******************案例**********************開始 2 from PyQt5.Qt import * 3 4 class Window(QWidget): 5 def __init__(self): 6 super().__init__() 7 self.setWindowTitle("QPlainTextEdit") 8 self.resize(500, 500) 9 self.setup_ui() 10 11 def setup_ui(self): 12 pte = QPlainTextEdit(self) 13 pte.resize(300,300) 14 pte.move(100,100) 15 self.pte = pte 16 17 test_btn = QPushButton(self) 18 test_btn.move(20,20) 19 test_btn.setText("測試按鈕") 20 test_btn.clicked.connect(self.btn_test) 21 22 # 展示行號 23 line_num_parent = QWidget(self) 24 line_num_parent.resize(30,300) 25 line_num_parent.move(70,100) 26 line_num_parent.setStyleSheet('background-color:cyan') 27 28 self.line_label = QLabel(line_num_parent) 29 self.line_label.move(0,5) 30 # 1-100 31 line_nums = "\n".join([str(i) for i in range(1,101)]) 32 self.line_label.setText(line_nums) 33 self.line_label.adjustSize() 34 35 def btn_test(self): 36 self.信號的操作() 37 38 def 信號的操作(self): 39 self.pte.updateRequest.connect(lambda rect,dy:\ 40 self.line_label.move(self.line_label.x(),self.line_label.y()+dy)) 41 42 if __name__ == '__main__': 43 import sys 44 app=QApplication(sys.argv) 45 window=Window() 46 window.show() 47 sys.exit(app.exec_()) 48 # *******************案例**********************結束