当前位置: 首页 > news >正文

PySide6 GUI 学习笔记——常用类及控件使用方法(多行文本控件QTextEdit)

文章目录

  • PySide6.QtWidgets.QTextEdit 应用举例
    • 概述
    • 核心特性
    • 常用方法
      • 文本内容操作
      • 光标和选择操作
      • 格式和样式
      • 查找功能
      • 视图控制
      • 状态设置
      • 常用信号
    • 代码示例
    • 示例说明
      • 1. 基本设置
      • 2. 文本格式化功能
      • 3. 功能按钮
      • 4. 信号处理

PySide6.QtWidgets.QTextEdit 应用举例

概述

QTextEditPySide6 中用于编辑和显示纯文本和富文本的控件。它提供了强大的文本处理能力,支持 HTML 样式标签和 Markdown 格式,能够处理大型文档并快速响应用户输入。

核心特性

  • 支持纯文本和富文本(HTML 4 子集)编辑

  • Markdown 格式支持

  • 自动换行和格式控制

  • 撤销/重做功能

  • 查找替换功能

  • 自定义拖放操作

  • 多种编辑和只读模式键盘快捷键

常用方法

文本内容操作

方法描述
setPlainText(text: str)设置纯文本内容
toPlainText() -> str获取纯文本内容
setHtml(html: str)设置 HTML 内容
toHtml() -> str获取 HTML 内容
setMarkdown(markdown: str)设置 Markdown 内容
toMarkdown() -> str获取 Markdown 内容
clear()清空所有内容
append(text: str)在文档末尾追加新段落

光标和选择操作

方法描述
textCursor() -> QTextCursor获取当前光标
setTextCursor(QTextCursor)设置当前光标
cursorForPosition(QPoint) -> QTextCursor获取指定位置的光标
cursorRect() -> QRect获取光标矩形区域
selectAll()全选所有文本
copy()复制选中内容
cut()剪切选中内容
paste()粘贴内容

格式和样式

方法描述
setAlignment(Qt.Alignment)设置段落对齐方式
setFontFamily(family: str)设置字体族
setFontPointSize(size: float)设置字体大小(磅值)
setFontWeight(weight: int)设置字体粗细
setFontItalic(italic: bool)设置斜体
setFontUnderline(underline: bool)设置下划线
mergeCurrentCharFormat(QTextCharFormat)合并当前字符格式

查找功能

方法描述
find(pattern: str, options: QTextDocument.FindFlags) -> bool查找文本模式

视图控制

方法描述
ensureCursorVisible()确保光标可见
scrollToAnchor(name: str)滚动到指定锚点

状态设置

方法描述
setReadOnly(ro: bool)设置只读模式
setPlaceholderText(text: str)设置占位文本
setLineWrapMode(mode: QTextEdit.LineWrapMode)设置换行模式
setLineWrapColumnOrWidth(width: int)设置换行宽度/列数

常用信号

信号描述
textChanged()文本内容改变时触发
cursorPositionChanged()光标位置改变时触发
selectionChanged()选择区域改变时触发
copyAvailable(bool)复制可用状态改变时触发
redoAvailable(bool)重做可用状态改变时触发
undoAvailable(bool)撤销可用状态改变时触发

代码示例

import sys
from PySide6.QtWidgets import (QApplication, QMainWindow, QTextEdit, QVBoxLayout, QWidget, QPushButton
)
from PySide6.QtGui import QTextCharFormat, QFont, QColor
from PySide6.QtCore import Qtclass TextEditorDemo(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("QTextEdit 示例")self.setGeometry(100, 100, 800, 600)# 创建主控件和布局central_widget = QWidget()self.setCentralWidget(central_widget)layout = QVBoxLayout(central_widget)# 创建文本编辑器self.text_edit = QTextEdit()self.text_edit.setPlaceholderText("在此输入内容...")self.text_edit.setLineWrapMode(QTextEdit.WidgetWidth)layout.addWidget(self.text_edit, 1)# 创建按钮面板button_layout = self.create_button_panel()layout.addLayout(button_layout)# 连接信号self.text_edit.textChanged.connect(self.on_text_changed)self.text_edit.cursorPositionChanged.connect(self.on_cursor_moved)def create_button_panel(self):from PySide6.QtWidgets import QHBoxLayoutbutton_layout = QHBoxLayout()# 格式按钮btn_bold = QPushButton("粗体")btn_bold.clicked.connect(self.toggle_bold)button_layout.addWidget(btn_bold)btn_italic = QPushButton("斜体")btn_italic.clicked.connect(self.toggle_italic)button_layout.addWidget(btn_italic)btn_color = QPushButton("颜色")btn_color.clicked.connect(self.change_color)button_layout.addWidget(btn_color)# 功能按钮btn_clear = QPushButton("清空")btn_clear.clicked.connect(self.text_edit.clear)button_layout.addWidget(btn_clear)btn_html = QPushButton("获取HTML")btn_html.clicked.connect(self.print_html)button_layout.addWidget(btn_html)return button_layoutdef toggle_bold(self):fmt = QTextCharFormat()fmt.setFontWeight(QFont.Bold if not self.text_edit.fontWeight() > QFont.Normal else QFont.Normal)self.text_edit.mergeCurrentCharFormat(fmt)def toggle_italic(self):fmt = QTextCharFormat()fmt.setFontItalic(not self.text_edit.fontItalic())self.text_edit.mergeCurrentCharFormat(fmt)def change_color(self):fmt = QTextCharFormat()fmt.setForeground(QColor("blue"))self.text_edit.mergeCurrentCharFormat(fmt)def on_text_changed(self):print("文本内容已更改")def on_cursor_moved(self):print(f"光标位置: {self.text_edit.textCursor().position()}")def print_html(self):html = self.text_edit.toHtml()print("HTML内容:")print(html[:200] + "..." if len(html) > 200 else html)if __name__ == "__main__":app = QApplication(sys.argv)window = TextEditorDemo()window.show()sys.exit(app.exec())

运行效果:
运行效果

示例说明

1. 基本设置

  • 创建主窗口和布局

  • 添加 QTextEdit 控件并设置占位文本和换行模式

  • 连接文本变化和光标移动信号

2. 文本格式化功能

  • 粗体/斜体切换按钮

  • 更改文本颜色功能

  • 通过 QTextCharFormat 和 mergeCurrentCharFormat 应用格式

3. 功能按钮

  • 清空编辑器内容

  • 打印当前内容的 HTML 表示

  • 获取纯文本内容

4. 信号处理

  • 监听文本变化事件

  • 跟踪光标位置变化

这个示例展示了 QTextEdit 的核心功能,包括文本编辑、格式控制、内容获取和信号处理。您可以根据需要扩展功能,如添加查找替换、Markdown支持或自定义拖放操作。

相关文章:

  • 1.认识Spring
  • 第3章:图数据模型与设计
  • 运行示例程序和一些基本操作
  • [ACTF2020 新生赛]Include 1(php://filter伪协议)
  • AI数据分析在体育中的应用:技术与实践
  • 从零设计一个智能英语翻译API:架构与实现详解
  • 计算机组成与体系结构:补码数制一(Complementary Number Systems)
  • 信息最大化(Information Maximization)
  • 大模型在创伤性脑出血全周期预测与诊疗方案中的应用研究
  • leetcode刷题日记——二叉搜索树中第 K 小的元素
  • 从认识AI开始-----AutoEncoder:生成模型的起点
  • Web前端基础
  • ELK日志管理框架介绍
  • XSS(跨站脚本攻击)详解
  • 对称哈希连接实现
  • ECharts 提示框(tooltip)居中显示位置的设置技巧
  • 学习STC51单片机30(芯片为STC89C52RCRC)
  • Jina AI 开源 node-DeepResearch
  • 网络协议通俗易懂详解指南
  • 应用层协议:HTTPS
  • dw做网站怎么替换字体/电脑培训机构哪个好
  • 淘宝上网站建设为啥这么便宜/5118数据分析平台官网
  • 网站建设7个基/自学seo大概需要多久
  • 长寿做网站/seo营销推广平台
  • 个人可以建设新闻网站吗/网络营销模式下品牌推广研究
  • 做网站都有什么功能/设计模板网站