示例隐藏的父窗口和可见的子窗口

示例隐藏的父窗口和可见的子窗口

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"

图标不匹配

Pyinstaller 的文件集合

答案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)

主窗口()

}

相关内容