6.11 QTextEdit多行文本框文本操作
一、QTextEdit多行文本框文本操作
- QTextEdit可以通过光标来操作文本内容和格式等,QTextEdit也可以直接对大多数常见的功能直接设置。这节课就是通过QTextEdit直接操作文本,有自动化格式、换行模式、覆盖模式等格式操作,还有颜色设置、字符格式、编辑效果等样式操作。
1.代码
from PyQt5.Qt import *
import sys
class Text_Url(QTextEdit) :
def mousePressEvent(self, QMouseEvent) :
print(QMouseEvent.pos())
link = self.anchorAt(QMouseEvent.pos())
if len(link) > 0 :
QDesktopServices.openUrl(QUrl(link))
return super().mousePressEvent(QMouseEvent)
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 = Text_Url('QTextEdit-多行文本框' * 5, 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.qte.insertHtml("多行文本框" * 20 + "<a href='http://www.bl186.net' name='pyqt5'>PyQt5中文网</a>")
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) :
# 1.自动化格式(以*作为触发)
# self.qte.setAutoFormatting(QTextEdit.AutoBulletList)
# 2.换行模式设置
# QTextEdit.NoWrap # 不换行,超过宽度后会出现水平滚动条
# QTextEdit.WidgetWidth # 以控件宽度为标准,保持单词完整性
# QTextEdit.FixedColumnWidth # 填充列宽度
# QTextEdit.FixedPixelWidth # 直接设置一行宽度为多少像素
self.qte.setLineWrapMode(QTextEdit.FixedPixelWidth) # 设置软换行
self.qte.setLineWrapColumnOrWidth(100) # 配合FixedPixelWidth和FixedColumnWidth
# QTextOption.NoWrap
# QTextOption.WordWrap # 保持单词完整性
# QTextOption.ManualWrap
# QTextOption.WrapAnywhere # 在任意位置换行
# QTextOption.WrapAtWordBoundaryOrAnywhere
# self.qte.setWordWrapMode(QTextOption.WrapMode) # 设置单词换行模式
# 3.设置覆盖模式
self.qte.setOverwriteMode(True) #输入字符会把后面的字符覆盖掉
# 4.光标设置
self.qte.setCursorWidth(10) #光标本身的宽度
# 5.段落对其方式设置
# Qt.AlignLeft
# Qt.AlignRight
# Qt.AlignCenter
self.qte.setAlignment(Qt.AlignRight) #右对齐
# 6.字体格式设置(字体样式、字体尺寸、字体效果、统一设置)
# QFontDialog.getFont()
# self.qte.setFontFamily('站酷快乐体2016修订版')
# self.qte.setFontWeight(5)
#
# self.qte.setFontPointSize(30)
#
# self.qte.setFontUnderline(True)
# font = QFont()
# font.setFamily('站酷快乐体2016修订版')
# font.setOverline(True)
# self.qte.setFont(font)
# 颜色设置(文字颜色和背景颜色)
self.qte.setTextBackgroundColor(QColor(100, 50, 50))
self.qte.setTextColor(QColor(200, 10, 100))
# 设置字符格式
tcf = QTextCharFormat()
tcf.setFontFamily('站酷快乐体2016修订版')
tcf.setFontPointSize(30)
self.qte.setCurrentCharFormat(tcf)
tcf2 = QTextCharFormat()
tcf2.setFontUnderline(True) #下划线
# self.qte.setCurrentCharFormat(tcf2)
self.qte.mergeCurrentCharFormat(tcf2)
# 常用编辑操作
# copy()
# paste()
# canPaste()
# setUndoRedoEnabled()
# redo()
# undo()
# selectAll()
# find()
self.qte.copy() #点击按钮就复制了
self.qte.paste() #已经复制过,点击按钮就粘贴了
# QTextDocument.FindBackward # 从后向前查找
# QTextDocument.FindCaseSensitively # 区分大小写操作
# QTextDocument.FindWholeWords # 匹配完整单词
self.qte.find('文本', QTextDocument.FindBackward)
# 只读设置
self.qte.setReadOnly(True)
# Tab控制
self.qte.setTabChangesFocus(True) #True就把tab键关闭功能了
self.qte.setTabStopDistance(150) # 点击按钮之后会自动变化
# 打开超链接-重写点击事件
# 可用信号
# self.qte.textChanged() # 文本内容改变时
# self.qte.selectionChanged() # 选中内容改变时
# self.qte.cursorPositionChanged() # 光标位置改变时
# self.qte.currentCharFormatChanged() # 当前字符发生改变时
# self.qte.copyAvailable() # 复制可用时
# self.qte.redoAvailable() # 重做可用时
# self.qte.undoAvailable() # 撤销可用时
self.qte.textChanged.connect(self.text_change) #连接对应的槽函数
self.qte.copyAvailable.connect(self.copy_yes)
def text_change(self) :
print('文本内容改变时')
def copy_yes(self, yes) :
print('复制可用', yes)
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 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码