From b12bc584b8096917348aea9cb96021dd1ce89a60 Mon Sep 17 00:00:00 2001 From: hulk Date: Sat, 12 Sep 2026 03:28:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(DLPilot):=20=E5=9B=BE=E6=A0=87=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=B8=BA=20DLP/Pilot=20=E5=8F=8C=E8=A1=8C=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1;=20=E5=9B=BE=E6=A1=88=E6=A0=8F=E4=BD=8D=E4=B8=A4?= =?UTF-8?q?=E6=8E=92=E5=90=84=205=20=E4=B8=AA=E7=AD=89=E5=AE=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HDMI-Tool/src/app_gui.py | 57 ++++++++++--------------- HDMI-Tool/src/build_exe.py | 4 +- HDMI-Tool/src/config.py | 2 +- HDMI-Tool/src/logos/logo_dlpilot.ico | Bin 0 -> 21109 bytes HDMI-Tool/src/logos/logo_dlpilot.png | Bin 0 -> 9131 bytes HDMI-Tool/src/logos/logo_ph_orange.ico | Bin 22047 -> 0 bytes HDMI-Tool/src/logos/logo_ph_orange.png | Bin 7522 -> 0 bytes HDMI-Tool/src/logos/logo_ph_orange.svg | 6 --- HDMI-Tool/src/logos/make_ico.py | 22 +++++----- 9 files changed, 37 insertions(+), 54 deletions(-) create mode 100644 HDMI-Tool/src/logos/logo_dlpilot.ico create mode 100644 HDMI-Tool/src/logos/logo_dlpilot.png delete mode 100644 HDMI-Tool/src/logos/logo_ph_orange.ico delete mode 100644 HDMI-Tool/src/logos/logo_ph_orange.png delete mode 100644 HDMI-Tool/src/logos/logo_ph_orange.svg diff --git a/HDMI-Tool/src/app_gui.py b/HDMI-Tool/src/app_gui.py index 837bcfc..3e2a984 100644 --- a/HDMI-Tool/src/app_gui.py +++ b/HDMI-Tool/src/app_gui.py @@ -40,13 +40,12 @@ REPO_URL = 'https://gitea.hulk.wang/hulk/LT8619C_Debug_Tools' def get_icon_path(): """工具图标: 源码模式取 logos/ 下, 打包模式取 exe 内嵌资源(_MEIPASS)""" - import os import sys if getattr(sys, 'frozen', False): - p = os.path.join(getattr(sys, '_MEIPASS', ''), 'logo_ph_orange.ico') + p = os.path.join(getattr(sys, '_MEIPASS', ''), 'logo_dlpilot.ico') else: p = os.path.join(os.path.dirname(os.path.abspath(__file__)), - 'logos', 'logo_ph_orange.ico') + 'logos', 'logo_dlpilot.ico') return p if os.path.exists(p) else None @@ -233,38 +232,28 @@ class App(ctk.CTk): text_color='#000000' if color == '#00FF00' else '#FFFFFF', command=lambda cc=color: self._show_solid(cc) ).pack(side='left', padx=3) - row3 = ctk.CTkFrame(c, fg_color='transparent') - row3.pack(fill='x', pady=(6, 0)) + # -- 图案栏位: 两排各 5 个, 等宽 -- self.slot_buttons = [] - for i in range(3): # 自定义栏位(沿用原 3 槽配置) - cell = ctk.CTkFrame(row3, fg_color='transparent') - cell.pack(side='left', padx=(0, 10)) - btn = ctk.CTkButton(cell, text=self.slots[i]['name'], width=96, - command=lambda i=i: self._show_custom(i)) - btn.pack(side='left') - ctk.CTkButton(cell, text='\uE713', width=30, height=24, - font=('Segoe MDL2 Assets', 13), - command=lambda i=i: self._configure_slot(i) - ).pack(side='left', padx=(4, 0)) - self.slot_buttons.append(btn) - ctk.CTkLabel(row3, text='点击投图, 齿轮按钮配置图片', - text_color='gray50').pack(side='left', padx=4) - # -- 光校图案(预留 5 槽): 3D 光固化打印测试/校准用图 -- - row4 = ctk.CTkFrame(c, fg_color='transparent') - row4.pack(fill='x', pady=(6, 0)) - for i in range(3, config.SLOT_COUNT): - cell = ctk.CTkFrame(row4, fg_color='transparent') - cell.pack(side='left', padx=(0, 6)) - btn = ctk.CTkButton(cell, text=self.slots[i]['name'], width=84, - command=lambda i=i: self._show_custom(i)) - btn.pack(side='left') - ctk.CTkButton(cell, text='\uE713', width=26, height=24, - font=('Segoe MDL2 Assets', 13), - command=lambda i=i: self._configure_slot(i) - ).pack(side='left', padx=(3, 0)) - self.slot_buttons.append(btn) - ctk.CTkLabel(row4, text='校准图案(齿轮改图)', - text_color='gray50').pack(side='left', padx=4) + for row_idx, group in enumerate((range(0, 5), range(5, 10))): + row = ctk.CTkFrame(c, fg_color='transparent') + row.pack(fill='x', pady=(6, 0)) + for i in group: + cell = ctk.CTkFrame(row, fg_color='transparent') + cell.pack(side='left', padx=(0, 6)) + btn = ctk.CTkButton(cell, text=self.slots[i]['name'], width=84, + command=lambda i=i: self._show_custom(i)) + btn.pack(side='left') + ctk.CTkButton(cell, text='\uE713', width=26, height=24, + font=('Segoe MDL2 Assets', 13), + command=lambda i=i: self._configure_slot(i) + ).pack(side='left', padx=(3, 0)) + self.slot_buttons.append(btn) + if row_idx == 0: + ctk.CTkLabel(row, text='点击投图, 齿轮按钮配置图片', + text_color='gray50').pack(side='left', padx=4) + else: + ctk.CTkLabel(row, text='校准图案(齿轮改图)', + text_color='gray50').pack(side='left', padx=4) # -- EDID 原始数据 -- card, c = self._card(col, 'EDID 原始数据', diff --git a/HDMI-Tool/src/build_exe.py b/HDMI-Tool/src/build_exe.py index 9c5ee57..d3d9ddb 100644 --- a/HDMI-Tool/src/build_exe.py +++ b/HDMI-Tool/src/build_exe.py @@ -21,7 +21,7 @@ import sys # 本脚本位于 src/, 打包产物输出到工具根的 release/(与 pattern_slots.json 同目录) SRC = os.path.dirname(os.path.abspath(__file__)) BASE = os.path.dirname(SRC) -ICO = os.path.join(SRC, 'logos', 'logo_ph_orange.ico') +ICO = os.path.join(SRC, 'logos', 'logo_dlpilot.ico') def ensure_pyinstaller(): @@ -73,7 +73,7 @@ def build(name, extra_args): # exe 文件图标 + 运行时窗口图标资源(从 _MEIPASS 读取) cmd += ['--icon', ICO, '--add-data', f'{ICO};.'] else: - print('警告: 未找到 logos/logo_ph_orange.ico(先运行 logos/make_ico.py), 本次打包不带图标') + print('警告: 未找到 logos/logo_dlpilot.ico(先运行 logos/make_ico.py), 本次打包不带图标') print('\n>>', ' '.join(cmd)) subprocess.check_call(cmd) out = os.path.join(dist, name + '.exe') diff --git a/HDMI-Tool/src/config.py b/HDMI-Tool/src/config.py index aa33656..e4aaf65 100644 --- a/HDMI-Tool/src/config.py +++ b/HDMI-Tool/src/config.py @@ -39,7 +39,7 @@ if getattr(sys, 'frozen', False): BASE_DIR = os.path.dirname(os.path.abspath(sys.executable)) else: BASE_DIR = os.path.dirname(os.path.abspath(__file__)) -SLOT_COUNT = 8 +SLOT_COUNT = 10 SLOT_CONFIG = os.path.join(BASE_DIR, 'pattern_slots.json') IMG_EXTS = ['.png', '.gif'] + (['.jpg', '.jpeg', '.bmp', '.webp'] if HAS_PIL else []) diff --git a/HDMI-Tool/src/logos/logo_dlpilot.ico b/HDMI-Tool/src/logos/logo_dlpilot.ico new file mode 100644 index 0000000000000000000000000000000000000000..924d85cce396e7c49dd1b1f1185d038de08af6f3 GIT binary patch literal 21109 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 diff --git a/HDMI-Tool/src/logos/logo_ph_orange.svg b/HDMI-Tool/src/logos/logo_ph_orange.svg deleted file mode 100644 index af4af1f..0000000 --- a/HDMI-Tool/src/logos/logo_ph_orange.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - HDMI - Tool - diff --git a/HDMI-Tool/src/logos/make_ico.py b/HDMI-Tool/src/logos/make_ico.py index 6536889..9a950e9 100644 --- a/HDMI-Tool/src/logos/make_ico.py +++ b/HDMI-Tool/src/logos/make_ico.py @@ -1,13 +1,13 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ -把 logo_ph_orange.svg 同款设计栅格化为多尺寸 .ico(供 exe 图标) +DLPilot 图标栅格化: 黑底 512, 橙色圆角矩形, 第一行 DLP(框内黑字), 第二行 Pilot(白字) ================================================================ -设计参数与 SVG 严格一致: 黑底 512, 橙色圆角矩形 x38 y64 w436 h186 rx34, -HDMI 146px Arial Bold 黑字(框内居中), Tool 146px 白字(基线 421)。 +设计参数: 黑底 512, 橙色圆角矩形 x38 y64 w436 h186 rx34, +DLP 146px Arial Bold 黑字(框内居中), Pilot 146px Arial Bold 白字(基线 421)。 -输出: logos/logo_ph_orange.png(512, 预览/复用) - logos/logo_ph_orange.ico(16~256 七档, exe 图标用) +输出: logos/logo_dlpilot.png(512, 预览/复用) + logos/logo_dlpilot.ico(16~256 七档, exe 图标用) 用法: python make_ico.py """ @@ -30,17 +30,17 @@ def render(size=512): raise SystemExit(f'未找到字体 {FONT}, 无法栅格化') f = ImageFont.truetype(FONT, max(8, round(146 * s))) cx = size / 2 - # HDMI: 居中于橙色框 - d.text((cx, 64 * s + 186 * s / 2), 'HDMI', font=f, fill=(0, 0, 0), anchor='mm') - # Tool: 与 SVG 基线 421 对齐(无下伸字母, 中心 = 421 - cap/2 ~= 368) - d.text((cx, 368 * s), 'Tool', font=f, fill=(255, 255, 255), anchor='mm') + # DLP: 居中于橙色框 + d.text((cx, 64 * s + 186 * s / 2), 'DLP', font=f, fill=(0, 0, 0), anchor='mm') + # Pilot: 与原设计基线 421 对齐(无下伸字母, 中心 = 421 - cap/2 ~= 368) + d.text((cx, 368 * s), 'Pilot', font=f, fill=(255, 255, 255), anchor='mm') return img if __name__ == '__main__': img = render(512) - png = os.path.join(BASE, 'logo_ph_orange.png') - ico = os.path.join(BASE, 'logo_ph_orange.ico') + png = os.path.join(BASE, 'logo_dlpilot.png') + ico = os.path.join(BASE, 'logo_dlpilot.ico') img.save(png) img.save(ico, sizes=[(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)])