QTextEdit-文本内容操作
QTextEdit-文本内容操作
QTextEdit-文本内容操作
################################ # PyQt5中文网 - PyQt5全套视频教程 # # https://www.PyQt5.cn/ # # 主讲: 村长 # ################################ from PyQt5.Qt import * import sys ''' 占位提示文本: setPlaceholderText() placeholderText() ''' 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() # self.place_hold() self.text_set() def func(self): self.qte = QTextEdit('111', 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.btn = QPushButton('按 钮', self) self.btn.move(120, 50) self.btn.resize(70, 30) self.btn.pressed.connect(self.text_cur) # ==============占位提示文本=============== # 代码分割线 - 开始 # def place_hold(self): # self.qte.setPlaceholderText('在这里输入文本内容') # ==============占位提示文本=============== # 代码分割线 - 结束 # ==============内容设置=============== # 代码分割线 - 开始 # 普通文本和富文本 def text_set(self): # self.qte.setPlainText('<h1>AAAAA</h1>') # self.qte.insertPlainText('<h1>AAAAA</h1>') # 这个方法不会清空原有的setText()中的文本内容,文本会放在前面 # print(self.qte.toPlainText()) # 获取 # self.qte.setHtml('<h1>AAAAA</h1>') # 插入富文本 # self.qte.insertHtml('<h1>AAAAA</h1>') # print(self.qte.toHtml()) # 会输出整个HTML网页完整模板代码 self.qte.setText('<h1>AAAAA</h1>') # 遇到富文本格式自动渲染 # 追加文本和清空文本 def add_clear(self): self.qte.append('<h1>AAAAA</h1>') # 会追加到原文本的结尾,并自动识别文本类型 self.qte.clear() # 配合信号来测试 # 文本光标完成内容和格式设置 def text_cur(self): # 1.首先创建一个光标对象;2.通过光标插入文本,传入上面的格式对象;# 3.插入文本内容格式 # self.qte.document() # 获取文本文档的方法,返回QTextDocument # self.qte.textCursor() # cursor是直接操作鼠标的方法,textCursor是操作光标的 ''' # 插入文本 # 1.首先创建一个光标对象 qtc = self.qte.textCursor() # 3.插入文本内容格式 tcf = QTextCharFormat() # 创建一个格式对象 tcf.setToolTip('pyqt5中文网') # 设置提示文本 tcf.setFontFamily('楷书') # 设置字体 tcf.setFontPointSize(25) # 设置字体大小 # 2.通过光标插入文本,传入上面的格式对象 qtc.insertText('www.PyQt5.cn' , tcf) qtc.insertHtml("<a href='https://www.pyqt5.cn'>PyQt5中文网</a>") # 插入图片 # 1.首先创建一个光标对象 qtc = self.qte.textCursor() # 3.插入图片内容格式 tcf = QTextImageFormat() tcf.setName('123.jpg') tcf.setWidth(40) tcf.setHeight(40) # 2.通过光标插入文本,传入上面的格式对象 qtc.insertImage(tcf) # 插入文件 # 1.首先创建一个光标对象 qtc = self.qte.textCursor() # 3.插入文件内容格式 tcf = QTextDocumentFragment().fromHtml("<a href='https://www.pyqt5.cn'>PyQt5中文网</a>") # 插入富文本 # tcf.fromHtml("<a href='https://www.pyqt5.cn'>PyQt5中文网</a>") # fromHtml有返回值,所以必须给个变量名,这样写就错了 # tcf = QTextDocumentFragment().fromPlainText("<a href='https://www.pyqt5.cn'>PyQt5中文网</a>") # 插入普通文本 # 2.通过光标插入文本,传入上面的格式对象 qtc.insertFragment(tcf) # 插入列表1 # 1.首先创建一个光标对象 qtc = self.qte.textCursor() # 3.插入文本内容格式 # tcf = QTextList() # tcf.count() # 2.通过光标插入文本,传入上面的格式对象 tcf = qtc.insertList(QTextListFormat.ListDecimal) # 返回一个QTextList对象 # qtc.createList(QTextListFormat.ListDecimal) print(tcf.item(3)) # 插入列表2 # 1.首先创建一个光标对象 qtc = self.qte.textCursor() # 3.插入文本内容格式 tcf = QTextListFormat() tcf.setNumberPrefix('$') # 列表前缀,必须要加上setStyle,设置为数字 tcf.setIndent(2) # 缩进一个Tab tcf.setStyle(QTextListFormat.ListDecimal) # 2.通过光标插入文本,传入上面的格式对象 qtc.insertList(tcf) # 插入表格 # 1.首先创建一个光标对象 qtc = self.qte.textCursor() # 3.插入表格格式 tcf = QTextTableFormat() tcf.setAlignment(Qt.AlignRight) tcf.setHeight(30) tcf.setWidth(150) tcf.setCellPadding(1.1) tcf.setCellSpacing(0.1) tcf.setColumnWidthConstraints() # 2.通过光标插入文本,传入上面的格式对象 # qtc.insertTable(2, 3) # qtc.insertTable(2, 3, tcf) # 返回QTextTable,还可以追加后续操作,如下 ttt = qtc.insertTable(2, 3, tcf) ttt.appendColumns(3) # 追加3列 # 插入文本快 qtc = self.qte.textCursor() tcf = QTextBlockFormat() tcf.setAlignment(Qt.AlignRight) tcf.setRightMargin(50) tcf2 = QTextCharFormat() tcf2.setFontFamily('隶书') tcf2.setFontWeight(50) qtc.insertBlock(tcf,tcf2) self.qte.setFocus() # 插入框架 qtc = self.qte.textCursor() tcf = QTextFrameFormat() tcf.setBorder(3) tcf.setRightMargin(20) qtc.insertFrame(tcf) # 获取最外层文本文档框架 doc = self.qte.document() root_frame = doc.rootFrame() root_frame.setFrameFormat(tcf) # 文本光标设置合并格式 # setBlockCharFormat # setBlockFormat # setCharFormat # mergeBlockCharFormat # mergeBlockFormat # mergeCharFormat qtc = self.qte.textCursor() tcf = QTextCharFormat() tcf.setFontPointSize(50) qtc.setBlockCharFormat(tcf) # 设置块内字符格式 # qtc.setBlockFormat(tcf) # 设置块格式,传入对象QTextBlockFormat # qtc.setCharFormat(tcf) # 设置选中字符格式,传入对象QTextCharFormat # 以下三个可以实现格式的合并,同时调用两种格式,接个172和173行测试 # qtc.mergeBlockCharFormat(tcf) # 合并当前块的字符格式,传入对象QTextCharFormat # qtc.mergeBlockFormat(tcf) # 合并当前块格式,传入对象QTextBlockFormat tcf2 = QTextCharFormat() tcf2.setFontStrikeOut(True) # qtc.mergeCharFormat(tcf2) # 合并当前字符格式,传入对象QTextCharFormat,上面设置好的格式和这段代码中设置的格式可以叠加展现 # 获取内容和格式 qtc = self.qte.textCursor() qtc.block() # 获取光标所在文本块 qtc.block().text() # 获取光标所在文本块的文本内容 qtc.block().blockNumber() # 获取光标所在文本块的段落编号 # 文本的选中和清除 qtc = self.qte.textCursor() # qtc.setPosition(3) # qtc.setPosition(3, QTextCursor.KeepAnchor) qtc.movePosition(QTextCursor.StartOfLine, QTextCursor.KeepAnchor, 1) qtc.select(QTextCursor.BlockUnderCursor) self.qte.setTextCursor(qtc) self.qte.setFocus() # 获取文本选中的内容 qtc.selectedText() # 获取当前选中文本内容 qtc.selection() # 获取当前选中文本文档 qtc.selectedTableCells() # 获取当前选中表格 # 选中位置获取 qtc.selectionStart() # 获取光标起始和结束的位置 qtc.clearSelection() # 取消选中文本,需要反向设置光标 self.qte.setTextCursor(qtc) # 取消选中文本,需要反向设置光标 # 选中文本移除 qtc.removeSelectedText() # 删除内容,不必要选中 qtc = self.qte.textCursor() qtc.deleteChar() # 删除一个字符,光标后面的字符,如果有选中文本,直接删除选中文本 qtc.deletePreviousChar() # 删除一个字符,光标前面的字符,如果有选中文本,直接删除选中文本 # 文本光标的位置获取 qtc = self.qte.textCursor() qtc.atBlockEnd() # 判断光标是否在段落结尾,相对于文本快 qtc.atEnd() # 判断光标是否在文档结尾,相对于文档 qtc.columnNumber() # 在第几列 qtc.positionInBlock() # 咋子文本快中的位置 ''' # 开始和结束编辑标识 qtc = self.qte.textCursor() QTextCursor QTextCharFormat qtc.beginEditBlock() qtc.insertText('aaa') qtc.insertBlock() # 类似于换行 qtc.insertText('bbb') qtc.insertBlock() qtc.insertText('ccc') qtc.insertBlock() qtc.endEditBlock() qtc.insertText('ddd') qtc.insertBlock() # ==============内容设置=============== # 代码分割线 - 结束 if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())