PySide6-控件教程-006-QLabel标签控件-信号

本文介绍PySide6中QLabel控件的信号功能,包括链接悬停与点击信号,并提供示例代码展示如何连接这些信号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QLabel 标签控件

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

信号

QLabel的可用信号只有链接被悬停、链接被点击两种,具体如下

  • .linkActivated(link: str) 当用户点击链接时发射此信号,将链接作为参数传出
  • .linkHovered(link: str) 当用户的光标置于链接之上时发射此信号,将链接作为参数传出

示例代码

本节对应示例代码如下,在已经正确安装 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.label_1 = QtWidgets.QLabel(self)
        self.label_2 = QtWidgets.QLabel(self)
        self.setup_ui()
        self.test_01()

    def setup_ui(self) -> None:
        """设置界面"""
        label_1 = self.label_1
        label_1.move(320, 200)
        label_1.setText(
            "<a href='https://github.com/muziing/PySide6-Code-Tutorial'>PySide6 Code Tutorial</a>"
        )

        label_2 = self.label_2
        label_2.move(320, 240)
        label_2.setText("[muzing的博客](https://muzing.top)")
        label_2.setTextFormat(Qt.MarkdownText)

    def test_01(self) -> None:
        """测试QLabel信号"""
        self.label_1.linkHovered.connect(lambda val: print(val))  # type: ignore
        self.label_2.linkHovered.connect(lambda val: print(val))  # type: ignore

        self.label_1.linkActivated.connect(lambda val: print(val))  # type: ignore
        self.label_2.linkActivated.connect(lambda val: print(val))  # type: ignore


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

### PySide6 和 PyQt6 快速开发技巧及实战案例 PySide6 和 PyQt6 是基于 Qt 框架的 Python 绑定库,广泛用于开发跨平台的图形用户界面(GUI)应用程序。以下是一些快速开发技巧和实战案例的示例代码[^1]。 #### 1. 创建简单的窗口应用 以下是一个使用 PySide6 创建简单窗口的示例代码: ```python from PySide6.QtWidgets import QApplication, QLabel # 初始化应用程序 app = QApplication([]) # 创建一个标签控件 label = QLabel("Hello, PySide6!") label.show() # 运行应用程序主循环 app.exec() ``` 此代码展示了如何使用 `QApplication` 和 `QLabel` 创建一个显示文本的窗口[^1]。 #### 2. 动态更新 UI 元素 在实际开发中,动态更新 UI 元素是常见的需求。以下是一个动态更新标签内容的示例: ```python from PySide6.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget class MyWindow(QWidget): def __init__(self): super().__init__() self.label = QLabel("初始文本") self.button = QPushButton("点击更新") # 设置布局 layout = QVBoxLayout() layout.addWidget(self.label) layout.addWidget(self.button) self.setLayout(layout) # 绑定按钮点击事件 self.button.clicked.connect(self.update_label) def update_label(self): self.label.setText("文本已更新!") # 初始化应用程序 app = QApplication([]) window = MyWindow() window.show() app.exec() ``` 上述代码展示了如何通过按钮点击事件动态更新标签内容。 #### 3. 使用信号与槽机制 信号与槽是 Qt 的核心机制之一,用于实现组件间的通信。以下是一个简单的信号与槽示例: ```python from PySide6.QtCore import QObject, Signal, Slot class Communicate(QObject): signal = Signal(str) class Receiver(QObject): @Slot(str) def receive_signal(self, message): print(f"接收到信号: {message}") # 创建信号发送者和接收者 sender = Communicate() receiver = Receiver() # 连接信号与槽 sender.signal.connect(receiver.receive_signal) # 发送信号 sender.signal.emit("Hello from signal!") ``` 此代码展示了如何定义信号、连接信号与槽,并触发信号。 #### 4. 集成外部资源(如图片或样式表) 在 GUI 应用中,通常需要集成外部资源以增强用户体验。以下是一个加载图片并应用样式表的示例: ```python from PySide6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget from PySide6.QtGui import QPixmap class ImageWidget(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() # 加载图片 pixmap = QPixmap("example.png") label = QLabel() label.setPixmap(pixmap) layout.addWidget(label) self.setLayout(layout) # 应用样式表 self.setStyleSheet("background-color: lightblue;") # 初始化应用程序 app = QApplication([]) window = ImageWidget() window.show() app.exec() ``` 此代码展示了如何加载图片并为窗口设置背景颜色[^1]。 #### 5. 参考资源 对于更深入的学习,可以参考《PyQt5快速开发与实战》一书的高清PDF版本及其源码[^2]。虽然该书主要针对 PyQt5,但其原理和大部分代码同样适用于 PyQt6PySide6--- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值