6.10 QTextCursor多行文本框文本光标文本块和字符格式设置
一、QTextCursor多行文本框文本光标文本块和字符格式设置
1.代码
from PyQt5.Qt import *
import sys
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()
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 text_cur(self) :
# 文本光标设置合并格式
# 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_())
分类:
可视化界面 / PYQT5
标签:
python可视化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?