Files
晨叶梦春 2c5dd1c942 feat(ui): add about window
Signed-off-by: 晨叶梦春 <wuziqian211@126.com>
2026-08-04 02:53:09 +08:00

2.5 KiB
Raw Permalink Blame History

图标资源说明

本目录存放图标的源文件与打包时使用的图标。其中 logo.icns 与 icon.ico 只在构建阶段使用;window_icon.png 由程序在运行时读取,并通过 PyInstaller 的 datas 一并打包。

文件 用途 由谁使用
logo.svg 矢量母版,修改图标时从这里改起 仅供设计使用,不参与构建
logo.png 1024×1024 位图母版,由 logo.svg 导出 logo.icns 与 icon.ico 的生成来源
logo.icns macOS .app 应用包图标 tchMaterial-parser.spec 中的 BUNDLE(icon=...)
icon.ico Windows 可执行文件图标 tchMaterial-parser.spec 中的 EXE(icon=...)
window_icon.png 程序运行时的窗口图标(窗口左上角、Alt+Tab,以及主界面标题旁) src/tchmaterial_parser/app.py 直接读取,tchMaterial-parser.spec 负责打包
last_quarter_moon_3d.png、sun_3d.png、crescent_moon_3d.png、information_3d.png(来自 microsoft/fluentui-emoji) 程序右上角选择主题、关于图标 src/tchmaterial_parser/images.py 直接读取,tchMaterial-parser.spec 负责打包
last_quarter_moon_flat.svg、sun_flat.svg、crescent_moon_flat.svg、information_flat.svg(来自 microsoft/fluentui-emoji) 矢量图 仅供设计使用,不参与构建

更换图标时的操作

修改 logo.svg 后,导出一份 1024×1024 的 logo.png,然后重新生成下列三个文件。

1. 重新生成 icon.ico

icon.ico 需要包含多个尺寸:Windows 在标题栏用 16×16,在桌面用 32×32,在「超大图标」视图下用 256×256。若只放单一尺寸,系统只能拉伸缩放,会明显模糊。

from PIL import Image

Image.open("assets/logo.png").convert("RGBA").save(
    "assets/icon.ico",
    format="ICO",
    sizes=[(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)],
)

2. 重新生成 logo.icns

在 macOS 上可使用系统自带的 iconutil(需先按 icon_16x16.png、icon_16x16@2x.png 等命名规则准备一个 logo.iconset 目录):

iconutil -c icns logo.iconset -o assets/logo.icns

3. 更新 window_icon.png

程序以 assets/window_icon.png 作为运行时窗口图标的唯一来源。更新图标时直接替换该文件即可,无需再同步源码字符串;tchMaterial-parser.spec 会在打包时将它收集到相同的 assets/ 相对路径。