PySide6-控件教程-003-QLabel标签控件-文本交互标志、文本选中

QLabel 标签控件

本文摘录自我的开源教程:PySide6 代码式教程 - QLabel,CSDN 平台仅做镜像,答疑、纠错请至 GitHub 提交 issue

文本交互标志

QLabel可以设置不同的文本交互标志,以控制用户交互
.setTextInteractionFlags(flags: Qt.TextInteractionFlags) 设置文本交互标志,具体见下方Qt.TextInteractionFlags

.textInteractionFlags() -> Qt.TextInteractionFlags 获取文本交互标志

Qt.TextInteractionFlags枚举值指定显示文本的控件对用户输入的反应方式

  • Qt.NoTextInteraction 不能与文本进行交互
  • Qt.TextSelectableByMouse 可以使用鼠标选择文本,并用上下文菜单或标准键盘快捷键复制到剪贴板
  • Qt.TextSelectableByKeyboard 可以用键盘上的光标键选择文本,会显示一个文本光标
  • Qt.LinksAccessibleByMouse 链接高亮显示,并可用鼠标激活
  • Qt.LinksAccessibleByKeyboard 链接可以使用Tab键获得焦点,并通过Enter键激活
  • Qt.TextEditable 文本完全可编辑
  • Qt.TextEditorInteraction 文本编辑器的默认值
  • Qt.TextBrowserInteraction QTextBrowser的默认值

选中文本

QLabel提供了选中文本内容相关的方法

  • .setSelection(start: int, length: int) 选中从start起长度length的文本
  • .selectedText() -> str 返回选中的字符
  • .hasSelectedText() -> bool 返回是否有文本被选中
  • .selectionStart() -> int 返回选择起始位置

示例代码

本节对应示例代码如下,在已经正确安装 PySide6 的前提下可直接在本地运行:

# https://github.com/muziing/PySide6-Code-Tutorial

import sys

from PySide6 import QtWidgets
from PySide6.QtCore import Qt

class MyWidget(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setWindowTitle("QLabel-文本交互标志、文本选中")
        self.resize(800, 600)
        self.setup_ui()
        self.test_01()
        self.test_02()

    def setup_ui(self) -> None:
        """设置界面"""
        self.label_1 = QtWidgets.QLabel("不能与文本进行交互", self)
        self.label_2 = QtWidgets.QLabel("可用鼠标选择", self)
        self.label_3 = QtWidgets.QLabel(
            "<a href='https://doc.qt.io/qt-6/qlabel.html#textInteractionFlags-prop'>链接可激活</a>",
            self,
        )
        self.label_3.setOpenExternalLinks(True)
        self.label_4 = QtWidgets.QLabel("文本完全可编辑", self)

        self.label_1.move(320, 180)
        self.label_2.move(320, 220)
        self.label_3.move(320, 260)
        self.label_4.move(320, 300)

    def test_01(self) -> None:
        """测试文本交互标志"""
        self.label_1.setTextInteractionFlags(Qt.NoTextInteraction)
        self.label_2.setTextInteractionFlags(Qt.TextSelectableByMouse)
        self.label_3.setTextInteractionFlags(
            Qt.LinksAccessibleByMouse | Qt.LinksAccessibleByKeyboard
        )
        self.label_4.setTextInteractionFlags(Qt.TextEditable)

        print(self.label_2.textInteractionFlags() == Qt.TextSelectableByMouse)

    def test_02(self) -> None:
        """测试文本选中"""
        self.label_2.setSelection(0, 2)
        if self.label_2.hasSelectedText():
            print(self.label_2.selectedText())


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyWidget()
    window.show()
    sys.exit(app.exec())

关于 PySide6-Code-Tutorial

  • 前身为已有近 500 Stars 的爆火教程 PyQt_practice
  • 每个模块(.py文件)都可运行,展示了各种控件的各种功能属性作用,代码中有注释讲解
  • 使用最新的 Python 与 PySide 版本(目前为3.10与6.3)
  • 已经涵盖数十个常用控件,且仍在快速增加中

教程目录原版教程地址:https://github.com/muziing/PySide6-Code-Tutorial

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值