1、QPlainTextEdit简介

  继承于QAbstractScrollArea

  描述与QTextEdit的一些差异见下图所示。

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

  功能作用的框架如下:

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

2、功能作用——占位提示文本

(1)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(2)功能操作及展示

1 def 占位提示文本(self):
2     self.pte.setPlaceholderText("请输入你的个人信息")
3     print(self.pte.placeholderText()) # 查看

3、功能作用——只读设置

(1)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(2)功能操作及展示

1 def 只读设置(self):
2     self.pte.setReadOnly(True)
3     print(self.pte.isReadOnly())

4、功能作用——格式

(1)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(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)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(2)操作及展示

1 def 转换行模式(self):
2     print(self.pte.lineWrapMode())
3     self.pte.setLineWrapMode(QPlainTextEdit.NoWrap) # 设置为不换行(水平滚动条)

6、功能作用——覆盖模式

(1)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(2)操作及展示(不覆盖中文)

1 def 覆盖模式(self):
2     self.pte.setOverwriteMode(True)
3     print(self.pte.overwriteMode())

7、功能作用——Tab控制

(1)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(2)操作及展示

1 def tab控制(self):
2     self.pte.setTabChangesFocus(False) # tab切换焦点
3     self.pte.setTabStopDistance(100)

8、功能作用——文本操作

(1)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(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)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(2)操作及展示

1 def 块操作(self):
2     print(self.pte.blockCount())
3     self.pte.setMaximumBlockCount(3) # 设置最大块数
4     print(self.pte.toPlainText()) # 查看内容

10、功能作用——常用编辑操作

(1)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(2)操作及展示

1 def 常用编辑操作(self):
2     # 有很多类似的操作参考QTextEdit里面的
3 
4     # 放大缩小
5     self.pte.zoomIn(5) # 默认为1,大于0放大,小于0缩小
6     # self.pte.zoomOut() # 与zoomIn刚好相反(过期,不建议用)

11、功能作用——滚动

(1)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(2)操作及展示

1 def 滚动(self):
2     # self.pte.centerCursor() # 将内容滚动到中间
3     self.pte.ensureCursorVisible() # 确保光标可见
4     self.pte.setFocus()

12、功能作用——光标

(1)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

QTextCursor.MoveOperation的一些选择:

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园  PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园
(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)框架

PyQt5Day18–输入控件QPlainTextEdit纯文本输入-冯金伟博客园

(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 = "
".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 # *******************案例**********************结束