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的一些选择:
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 = " ".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 # *******************案例**********************结束