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

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类图标QIcon)

文章目录

  • PySide6.QtGui.QIcon 类介绍
    • 一、核心特性
    • 二、Python 示例代码
      • 1. 从图像文件创建图标
      • 2. 使用系统主题图标
      • 3. 动态状态切换
      • 4. 高DPI图标处理
      • 5. 综合应用举例
    • 三、关键方法说明
    • 四、枚举类型

PySide6.QtGui.QIcon 类介绍

QIcon 是 Qt for Python 中用于管理可缩放图标的类,支持多种显示模式和状态。它能够根据不同的 UI 场景(如正常、禁用、激活、选中等状态)自动选择合适的图标样式,并支持从图像文件、主题系统或图标字体加载图标。

一、核心特性

  • 多状态支持:可为不同模式(Normal/Disabled/Active/Selected)和状态(On/Off)提供图标变体。

  • 灵活来源:支持从本地文件、内置资源、系统主题或矢量图标字体加载图标。

  • 高DPI适配:自动识别 @nx 高分辨率后缀图片,适配不同屏幕缩放比例。

  • 动态生成:当请求的图标尺寸不存在时,自动缩放最接近的可用图标。

二、Python 示例代码

1. 从图像文件创建图标

from PySide6.QtWidgets import QApplication, QToolButton
from PySide6.QtGui import QIconapp = QApplication()创建按钮并设置图标button = QToolButton()
button.setIcon(QIcon("open.png"))  # 基础图标
button.show()添加禁用状态图标icon = QIcon("open.png")
icon.addFile("open_disabled.png", QIcon.Mode.Disabled)
button.setIcon(icon)app.exec()

2. 使用系统主题图标

from PySide6.QtWidgets import QApplication, QPushButton
from PySide6.QtGui import QIconapp = QApplication()# 从系统主题加载"撤销"图标button = QPushButton()
button.setIcon(QIcon.fromTheme(QIcon.ThemeIcon.EditUndo))  
button.show()# 带备用图标的写法icon = QIcon.fromTheme("document-save", QIcon("save_fallback.png"))
button.setIcon(icon)app.exec()

3. 动态状态切换

from PySide6.QtWidgets import QCheckBox
from PySide6.QtGui import QIconclass ToggleButton(QCheckBox):def __init__(self):super().__init__("静音")# 准备两种状态图标self._on_icon = QIcon("volume_off.png")self._off_icon = QIcon("volume_on.png")self.setIcon(self._off_icon)self.toggled.connect(self._update_icon)def _update_icon(self, checked):self.setIcon(self._on_icon if checked else self._off_icon)

4. 高DPI图标处理

icon = QIcon()
icon.addFile("image.png")        # 普通分辨率
icon.addFile("image@2x.png")     # 2倍高分辨率
icon.addFile("image@3x.png")     # 3倍高分辨率

5. 综合应用举例

import sys
from PySide6.QtWidgets import QApplication,QWidget,QPushButton
from PySide6.QtGui import QPixmap,QIconclass MyWidget(QWidget):def __init__(self,parent=None):super().__init__(parent)pix =QPixmap()pix.load("bright.png")icon =QIcon(pix)self.setWindowIcon(icon)   #设置窗口图标btn = QPushButton(self)btn.setIcon(icon)  #设置按钮图标
if __name__ == '__main__':app=QApplication(sys.argv)window = MyWidget()window.show()sys.exit(app.exec())

QIcon示例

三、关键方法说明

方法描述
addFile(fileName, mode, state)添加带状态的图标文件
fromTheme(name)从系统主题加载图标
pixmap(size, mode, state)获取指定状态的像素图
isMask()检测是否为蒙版图标

四、枚举类型

  • Mode: 控制图标显示场景

    • Normal, Disabled, Active, Selected
  • State: 控制开关状态

    • On, Off
  • ThemeIcon: 提供200+预定义系统图标

    • 如 EditUndo, DialogWarning, MediaPlay 等

通过 QIcon 可以创建适应复杂 UI 需求的图标系统,其与 Qt 控件深度整合的特性能够自动处理不同显示环境和设备参数下的图标渲染问题。

http://www.xdnf.cn/news/639379.html

相关文章:

  • 【大模型应用开发】Qwen2.5-VL-3B识别视频
  • boost之preprocessor
  • 人工智能(AI)技术包括哪些技术
  • TCP 协议的相关特性
  • How to balance work and personal life?
  • 前端流行框架Vue3教程:28. Vue应用
  • PostgreSQL windows安装
  • Vue3编译器:静态提升原理
  • VBox共享文件夹
  • 2025一带一路暨金砖国家技能发展与技术创新大赛第三届企业信息系统安全赛项
  • Go语言--语法基础5--基本数据类型--循环语句
  • [ACTF新生赛2020]easyre
  • Bolt.new:重塑 Web 开发格局的 AI 利器
  • MFC:获取所有打印机的名称(打印机模块-2)
  • 【Siggraph Asia 2023】低光增强Diffusion-Low-Light-main(引入diffusion与DWT) -- part1论文精读
  • AutoGen SelectorGroupChat 示例:社会热搜话题事件榜单
  • 成功解决ImportError: cannot import name ‘DTensor‘ from ‘torch.distributed.tensor‘
  • 选择排序算法研究
  • 【NIPS 2024】Towards Robust Multimodal Sentiment Analysis with Incomplete Data
  • C++异步(1)
  • [Protobuf] 快速上手:安全高效的序列化指南
  • SymAgent:一种用于知识图谱复杂推理的神经符号自学Agent框架
  • Oracle中的[行转列]与[列转行]
  • 【目标检测】【医学图像目标检测】BGF-YOLO:脑肿瘤检测的多尺度注意力特征融合
  • 【linux】systemctl基本语法
  • 康佳Java开发面试题及参考答案
  • 前端vue3实现图片懒加载
  • 【LCEL深度解析】LangChain表达式语言的工程化实践指南
  • 基于stm32单片机的智能盲杖研究
  • # YOLO11解决方案之区域追踪探索