PyQt5Day18--輸入控件QPlainTextEdit純文本輸入


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 # *******************案例**********************結束

 


免責聲明!

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



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