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())
三、关键方法说明
方法 | 描述 |
---|---|
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 控件深度整合的特性能够自动处理不同显示环境和设备参数下的图标渲染问题。