EXE 文件“360 DFV STITCHER xxx.exe”是使用 Pyinstaller 创建的。任务栏显示 GUI LOGO 图标“logo.png”,EXE 文件显示图标“360_stitcher.ico”。
尝试解决问题的方法:删除图标缓存,重新启动 Windows 探索,打开“360 DFV STITCHER xxx.exe”,图标不匹配。
以下是 Pyinstaller 代码:
pyinstaller --windowed --add-data "logo.png;." --add-data "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\Guide_Normal.png;." --add-data "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\Guide_Edit_Preset.png;." --icon="C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\360_stitcher.ico" --add-data "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\default_2016.txt;." --add-data "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\default_2017.txt;." --add-data "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\default_other.txt;." --add-data "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\preset_2016.txt;." --add-data "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\preset_2017.txt;." --add-data "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\preset_other.txt;." --add-data "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\preset_Choose Preset.txt;." --add-binary "C:\Users\canjm\Desktop\STUFF\360 DF_EYE VID STITCHER\ffmpeg.exe;." --version-file version.txt "360 DFV STITCHER xxx.py"
答案1
简单来说,MS Windows 总是使用任务栏中的窗口图标。为了解决这个问题,让任务栏显示与 EXE 窗口不同的图标,我们需要创建一个隐藏窗口,并在任务栏中显示我们需要的图标。子“顶部”窗口将使用与父隐藏窗口不同的图标。这一切都是在转换为 EXE 文件之前在 Python 代码中完成的。示例 Python 代码:{
示例隐藏的父窗口和可见的子窗口
导入操作系统
将 tkinter 导入为 tk
导入时间
basedir = os.path.dirname(文件)
尝试:从 ctypes 导入 windll # 仅存在于 Windows 上。
myappid = "mycompany.myproduct.subproduct.version"
windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
除了 ImportError:通过
def on_close(): hidden_window.destroy() # 当 root_window 关闭时关闭 hidden_window
def main_window(): # 创建带有按钮的主窗口 root_window = tk.Toplevel() root_window.title("Main Window")
def handle_button_press(event):
time.sleep(6)
on_close()
button_icon = tk.PhotoImage(file=os.path.join(basedir, "gear_19713.png"))
button = tk.Button(root_window, text="My simple app.", image=button_icon)
button.bind("<Button-1>", handle_button_press)
button.pack()
# Set main window icon
image_icon = tk.PhotoImage(file=os.path.join(basedir, "logo.png"))
root_window.iconphoto(False, image_icon)
root_window.protocol("WM_DELETE_WINDOW", on_close) # Call on_close when root_window is closed
root_window.mainloop()
创建一个没有按钮和LOGO的隐藏窗口‘gear_19713.png’
hidden_window = tk.Tk() hidden_window.title("隐藏窗口")
设置主窗口图标
image_icon_hidden = tk.PhotoImage(file=os.path.join(basedir, "gear_19713.png")) hidden_window.iconphoto(False, image_icon_hidden)
将尺寸设置为 0x0 像素
隐藏窗口.几何(“0x0”)
将窗口移出屏幕
hidden_window.geometry("+10000+10000")
将主窗口的关闭事件连接到 on_close 函数
hidden_window.protocol("WM_DELETE_WINDOW", on_close)
主窗口()
}