PyQt6-QLabel学习笔记

news2024/12/23 23:41:24

QLabel支持文本或图片显示,是任何GUI设计中最常用的控件之一。

一、QLabel基本概述

QLabel标签用于显示,可以以多种方式进行外观配置,没有提供用户交互功能,但是可以用于为另一个小部件指定焦点助记符或快捷键。

显示内容类型

类型

说明

纯文本

使用setText()方法设置纯文本信息进行显示

富文本

使用setText()方法设置一个富文本信息,亦是一个HTML格式的标签文本信息。

图片

使用setPixmap()方法将QPixmap对象设置导标签中。

视频

使用setMovie()方法将QMovie对下个设置导标签中进行显示。

数字

使用setNum()方法将数值(int或者double类型)转换成纯文本显示到标签中。

空数据

类似于空文本,可使用clear()方法来清空数据。

注:

要显示类似网页获取的富文本格式的内容时可使用setTextFormat()方法进行显示,避免标签将文本识别成富文本进行显示。

二、QLabel常用方法

1.设置对齐方式setAlignment(AlignmentFlag)

self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)

对齐方式AlignmentFlag列表:

  • AlignLeft

  • AlignLeading

  • AlignRight

  • AlignTrailing

  • AlignHCenter

  • AlignJustify

  • AlignAbsolute

  • AlignHorizontal_Mask

  • AlignTop

  • AlignBottom

  • AlignVCenter

  • AlignVertical_Mask

  • AlignCenter

  • AlignBaseline

2.设置文本缩进setIndent(int)

self.label_plaintext.setIndent(4)       #设置缩进量为4个像素点

3.设置和获取显示内容

# 通过以下方法设置文本显示内容
self.label_plaintext.setText("这是一个纯文本")
self.label_richtext.setText("<font color = blue>这是一个富文本文本</font>")
self.label_int.setNum(1314)
self.label_double.setNum(123.456)
self.label_image.setPixmap(QPixmap(r"./res/百度一下.png"))
self.label_link.setText("<a href='https://www.baidu.com'>百度一下</a>")     # 超链接标签

# 通过以下方法获取显示内容
self.label.text()
self.label.pixmap()
self.label.movie()

4.设置换行setWordWrap(bool)

self.label_plaintext.setWordWrap(True)

5.设置标签内容交互标识setTextInteractionFlags(TextInteractionFlag)

self.label_plaintext.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse)  # 使能文本可选

标志如下:

  • LinksAccessibleByKeyboard:链接用tab键聚焦,enter激活

  • LinksAccessibleByMouse:链接可用鼠标突出显示和激活

  • NoTextInteraction:不可与文本交互

  • TextBrowserInteraction:文本浏览方式默认值

  • TextEditable:可编辑

  • TextEditorInteraction:文本编辑器默认值

  • TextSelectableByKeyboard:文本可用键盘选择,显示一个光标

  • TextSelectableByMouse:文本可用鼠标选择,支持复制到剪切板

6.返回所选文本

label.selectedText()

7.设置伙伴关系setBuddy(QWidget)

label.setBuddy(QWidget)

8.允许打开超链接

self.label_link.setOpenExternalLinks(True)

三、QLabel常用信号(事件)

    • 鼠标滑过事件linkHovered(str)

当用户将鼠标悬停在链接上时发出此信号。由锚点引用的URL在链接中传递。

    • 鼠标点击事件linkActivated(str)

该信号在用户单击链接时发出。由锚点引用的URL在链接中传递。

注意:

  • 该信号需要标签设置了超链接,使用html的a标签,设置了herf属性,如“<a herf="***"></a>”才能正常触发信号,否则无法触发触发信号。

  • 若设置了允许打开超链接,则无法触发linkActivated信号,若需要保留超链接和触发信号,可以使用在信号槽中设置允许打开超链接,然后再在其他槽函数中重新关闭打开超链接。

示例1,QLabel的基本操作:

# _*_ coding:utf-8 _*_ 

import sys
from PyQt6.QtWidgets import QApplication
from PyQt6.QtWidgets import QWidget
from PyQt6.QtWidgets import QMainWindow
from PyQt6.QtWidgets import QVBoxLayout
from PyQt6.QtWidgets import QLabel
from PyQt6.QtWidgets import QLineEdit
from PyQt6.QtWidgets import QPushButton
from PyQt6.QtGui import QPixmap
from PyQt6.QtGui import QColor
from PyQt6.QtGui import QFont
from PyQt6.QtCore import Qt


class QLabelDemo(QMainWindow):
    """标签示例"""

    def __init__(self) -> None:
        """构造函数"""
        
        super().__init__()      # 调用父类初始化函数-
        self.init_ui()  # 初始化界面

    def init_ui(self):
        """初始化UI界面"""

        self.setWindowTitle("QLabelDemo")   # 设置标题
        self.resize(600,400)        #设置窗体尺寸        
        self.mainwidget = QWidget()     #主控件
        self.vblayout_main = QVBoxLayout()      # 中央控件布局
        self.vblayout_main.setAlignment(Qt.AlignmentFlag.AlignCenter)       # 设置居中对齐
        self.mainwidget.setLayout(self.vblayout_main)       # 设置布局
        self.setCentralWidget(self.mainwidget)      # 设置中心控件
        
        self.label_plaintext = QLabel(self)      # 纯文本标签
        self.label_plaintext.setText("这是一个纯文本,用来进行基本测试,同时可以用来看是否支持换行,哈哈哈哈哈")
        self.label_plaintext.setIndent(10)       # 设置缩进量为10个像素点
        self.label_plaintext.setAlignment(Qt.AlignmentFlag.AlignLeft)
        self.label_plaintext.setWordWrap(True)          # 允许换行
        self.label_plaintext.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse)  # 使能文本可选
        self.label_plaintext.setSelection(0,3)  # 选中文本
        self.label_plaintext.linkHovered.connect(self.link_hovered)  # 关联鼠标滑过事件
        self.label_plaintext.linkActivated.connect(self.link_action)  # 关联鼠标点击事件
        self.vblayout_main.addWidget(self.label_plaintext)

        self.label_richtext = QLabel(self)      # 富文本标签
        self.label_richtext.setText("<font color = blue>这是一个富文本文本</font>")
        self.label_richtext.setAlignment(Qt.AlignmentFlag.AlignLeft)
        self.vblayout_main.addWidget(self.label_richtext)

        self.label_int = QLabel(self)      # 整型标签
        self.label_int.setNum(1314)
        self.label_int.setAlignment(Qt.AlignmentFlag.AlignLeft)
        self.vblayout_main.addWidget(self.label_int)

        self.label_double = QLabel(self)      # 双精度数字标签
        self.label_double.setNum(123.456)
        self.label_double.setAlignment(Qt.AlignmentFlag.AlignLeft)
        self.label_double.linkHovered.connect(self.link_hovered)  # 关联鼠标滑过事件
        self.label_double.linkActivated.connect(self.link_action)  # 关联鼠标点击事件
        self.vblayout_main.addWidget(self.label_double)

        self.label_image = QLabel(self)      # 图片标签
        self.label_image.setPixmap(QPixmap(r"./res/百度一下.png"))
        self.label_image.setAlignment(Qt.AlignmentFlag.AlignLeft)
        self.label_image.setToolTip("这是一个图片标签")
        self.label_image.linkHovered.connect(self.link_hovered)  # 关联鼠标滑过事件
        self.label_image.linkActivated.connect(self.link_action)  # 关联鼠标点击事件
        self.vblayout_main.addWidget(self.label_image)

        self.label_link = QLabel(self)      # 链接标签
        self.label_link.setText("<a href='https://www.baidu.com'>百度一下</a>")     # 超链接标签
        self.label_link.linkHovered.connect(self.link_hovered)  # 关联鼠标滑过事件
        self.label_link.linkActivated.connect(self.link_action)  # 关联鼠标点击事件
        self.label_link.setAlignment(Qt.AlignmentFlag.AlignLeft)
        self.vblayout_main.addWidget(self.label_link)

        self.setWindowCenter()      # 窗体居中


    def setWindowCenter(self):
        """窗口居中"""
        
        win_rect = self.frameGeometry()     # 获取窗体矩形                   
        green_center = self.screen().availableGeometry().center()   # 获取屏幕矩形中心
        win_rect.moveCenter(green_center)       # 窗体矩形移动居中
        self.move(win_rect.topLeft())        # 窗体移动居中,坐标点时窗体矩形左上角


    def link_hovered(self, link) -> None:
        print(self.sender().text() + ":鼠标划入标签! 当前链接:" + link)
        self.label_link.setOpenExternalLinks(False)

    def link_action(self, link) -> None:
        print(self.sender().text() + ":鼠标点击! 当前链接: " + link)
        if self.sender() == self.label_link:
            self.label_link.setOpenExternalLinks(True)      # 需要使能打开外部链接开关才能正常打开超链接


if __name__ == "__main__":
    """以主程序运行"""

    app = QApplication(sys.argv)
    window = QLabelDemo()
    window.show()
    sys.exit(app.exec())

结果:

界面:

选中文本:

触发信号,双击可打开超链接:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HoloLens 2 应用开发流程笔记

本文链接&#xff1a;微信推文阅读效果更佳 目录安装工具应用开发举例配置 Unity创建新的 Unity 项目切换生成平台导入和配置资源导入 MRTK Unity 基础包配置 Unity 项目为 XR SDK 配置项目设置创建场景并配置 MRTK交互例子添加并调整第一个立方体向立方体添加脚本添加第二个立…

20篇高质量程序人生文章分享,做开发不仅仅只有代码

我一直觉得&#xff0c;我们做开发&#xff0c;不应该只有代码&#xff0c;合上公司的电脑脱离了公司的产品需求就脱离了程序&#xff0c;而应该结合软件的程序思维去更多的思考我们所处的生活和空间&#xff0c;从而指导自己面对更多的未曾见过的人与事&#xff0c;这可能就是…

Java基础之异常处理

一、小试牛刀 num1 / num2 当除数为零时&#xff0c;程序就会抛出异常&#xff0c;程序就会崩溃而导致退出。 我们可以通过异常处理机制来解决该问题 如果我们认为一段代码可能发生异常&#xff0c;可以使用try-catch-finally异常处理机制来解决。从而保证程序的健壮性。 将可能…

前端工程化-多维度检测重复代码

更多文章可关注我的个人博客&#xff1a;https://seven777777.github.io/myblog/ 1. 检测项目重复代码 1.1 检测方案&#xff1a;jscpd 方法一&#xff1a; 全局安装jscpd依赖npm i -g jscpd项目根路径执行&#xff1a;jscpd -p "src/**/*.js" -k 15 -l 5 方法二…

【黑马SpringCloud(3)】Docker

Docker初识DockerDocker与虚拟机的区别Docker架构DockerHubDocker镜像操作Docker容器操作数据卷自定义镜像镜像结构Dockerfile构建Java项目基于java:8-alpine镜像&#xff0c;构建java项目集群部署微服务Docker-Compose镜像仓库搭建私有镜像仓库Docker安装&#xff1a;https://…

Go第 14 章 :文件操作

Go第 14 章 &#xff1a;文件操作 14.1 文件的基本介绍  文件的概念 文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的 word文档,txt文 件,excel 文件…都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声 音… …

排序分页多表查询

文章目录一、排序ORDER BY排序规则单列排序多列排序二、分页LIMIT背景实现格式举例公式优点三、多表查询笛卡尔积&#xff08;或交叉连接&#xff09;的理解解决笛卡尔积问题多表查询分类等值连接非等值连接自连接内连接 vs 外连接SQL99实现多表查询基本语法内连接&#xff08;…

测试人员怎么对待Bug

测试人员如何描述发现的Bug咱们提Bug至少要包含这个问题出现的版本&#xff0c;问题出现的环境&#xff0c;问题出现的步骤&#xff0c;预期结果&#xff0c;实际结果。但不限于标题&#xff0c;bug归属&#xff0c;bug等价等等举个栗子&#x1f601;很容易发现二维码被登入页面…

深入分析三层网络交换机的原理和设计

引言 传统路由器在网络中起到隔离网络、隔离广播、路由转发以及防火墙的作业&#xff0c;并且随着网络的不断发展&#xff0c;路由器的负荷也在迅速增长。其中一个重要原因是出于安全和管理方便等方面的考虑&#xff0c;VLAN(虚拟局域网)技术在网络中大量应用。VLAN技术可以逻辑…

跨平台编译go(交叉编译)

以将一个简单的go http 部署到docker为例&#xff01; 方法一&#xff1a;构建service镜像同时拉取go镜像 Dockerfile文件 # alpine Linux发行版&#xff0c;该发行版的大小很小并且内置了Go FROM golang:alpine# 设置linux环境变量 ENV GO111MODULEon \CGO_ENABLED0 \GOOSl…

MyBatis持久层框架详细解读:MyBatis快速入门篇

文章目录1. 前言2. JDBC 存在的缺点3. MyBatis 优化4. MyBatis 快速入门5. 总结Java编程基础教程系列1. 前言 JavaEE 企业级 Java 项目中的经典三层架构为表现层&#xff0c;业务层和持久层&#xff0c;使用Java 代码操作数据库属于持久层内容&#xff0c;而 MyBatis 对 JDBC …

Appmsg:APP辅助分析神器

一、前言 在进行APP渗透测试、APP病毒分析或写APP测试报告时经常会用到APP基本信息&#xff0c;有些工具虽然可以解析APP&#xff0c;但缺少想要的信息&#xff0c;有些解析的结果不够准确&#xff0c;于是只好自研一款工具来解决。 二、定位 主要适用于以APP病毒分析、APP漏…

一个数据驱动的动态 NFT 实现方案

1 背景2022 年是 Web3 行业很不如意的一年&#xff0c;DeFi 旧力已去&#xff0c;游戏和社交应用新力未发&#xff0c;放眼望去&#xff0c;似乎只有 NFT 仍然热度不减&#xff0c;各种应用、各种概念也是层出不穷&#xff0c;几乎是独力支撑熊市当中 Web3 的希望。除了围绕 NF…

【MFC】MFC应用程序流程(11)

在WIN32应用程序中使用MFC于MFC框架创建的应用程序流程基本上一致的&#xff0c;不同之处是对MFC框架的使用。 MFC应用程序流程 应用程序类继承CWinAppEx&#xff08;类似CWinApp&#xff09;&#xff0c;编译时注入的WinMain函数利用多态机制实现应用程序初始化&#xff1a;…

LaoCat带你认识容器与镜像(番外一【Harbor】)

祝大家开工大吉呀&#xff0c;新的一年要有新的收获呀 ~ 本章内容 搭建Docker镜像私仓Harbor&#xff0c;并配置Docker私仓。 本文实操全部基于Ubuntu 20.04 宿主机 > linux服务器本身 Harbor > 2.5.3 Docker系列文章之仓库篇就介绍了Docker有俩种类型的镜像仓库&#x…

AppShark:一款针对Android应用程序的静态分析与漏洞扫描框架

关于AppShark AppShark是一款针对Android应用程序的安全测试框架&#xff0c;该工具本质上是一个静态污点分析平台&#xff0c;可以用于扫描Android应用程序中的漏洞。 AppShark除了实现行业普遍应用的数据流分析&#xff0c;还将指针分析与数据流分析融合&#xff0c;因而漏…

【项目精选】基于SpringBoot+Vue实现的仿掘金论坛系统(包含完整源码以及部署教程)

项目简介 本论坛基于SpringBootVue框架实现前后端分离&#xff0c;自适应手机端和电脑端&#xff0c;界面简洁美观&#xff0c;功能完善&#xff0c;性能高效。分为用户系统和管理系统两部分。 大厂微服务架构设计&#xff1b;代码简洁、高效无冗余&#xff1b;注释详细易阅读…

LabVIEW 在NI Linux实时设备上访问Shell

LabVIEW 在NI Linux实时设备上访问Shell有一台运行NI Linux实时操作系统的设备&#xff0c;想访问设备上的shell或终端。要使用以下任一方法与设备通信&#xff0c;必须在计算机上安装终端客户端。使用SSH连接&#xff1a;1. 打开电源并将设备连接到网络或直接连接到计算机。2.…

已解决:Linux安装Docker完整过程

① 目的 接口自动化接口需要持续集成&#xff0c;最终选择Jenkins来实现。通过docker来实现安装部署Jenkins ② 环境 Linux ③Docker的自动化安装 Docker官方和国内daocloud都提供了一键安装的脚本&#xff0c;使得Docker的安装更加便捷。 官方的一键安装方式&#xff1a; curl…

C#,索尼偏光相机(Polarization Camera)传感器IMX250和专用SDK简介

以下文字用百度翻译&#xff0c;效果一般&#xff0c;凑合看吧。2018年12月开始上市的索尼偏光相机和偏光相机专用SDK实现了高功能、高画质、高速处理。其要点在于&#xff0c;开发为不在需要专业知识的偏振信号处理的安装中花费工时&#xff0c;能够以最小限度的成本利用的SDK…