Python 将类似文件的对象用于Tk().iconbitmap()
我正在使用Tkinter编写一个程序,最终将使用py2exe编译成exe。我想在其中包含一个图标,以便在windows上使用。它将是相同的一个,因为我已经包装为图标的exe。有没有办法通过定位exe文件或使用类似文件的对象在Tkinter中包含图标?我知道win32api可以找到当前正在运行的exe文件,但我相信py2exe会将原始文件提取到temp,然后运行它,因此无法通过这种方式找到原始exe。我还想把它放在一个include文件夹中,但我不知道cwd的设置是否正确。提前谢谢你的帮助 您可以使用icon\u resources选项将图标嵌入到py2exe二进制文件中 然后可以使用windows api检索它Python 将类似文件的对象用于Tk().iconbitmap(),python,tkinter,py2exe,Python,Tkinter,Py2exe,我正在使用Tkinter编写一个程序,最终将使用py2exe编译成exe。我想在其中包含一个图标,以便在windows上使用。它将是相同的一个,因为我已经包装为图标的exe。有没有办法通过定位exe文件或使用类似文件的对象在Tkinter中包含图标?我知道win32api可以找到当前正在运行的exe文件,但我相信py2exe会将原始文件提取到temp,然后运行它,因此无法通过这种方式找到原始exe。我还想把它放在一个include文件夹中,但我不知道cwd的设置是否正确。提前谢谢你的帮助 您可以
import win32gui, win32api, win32con
from ctypes import c_int, windll
hicon = win32gui.CreateIconFromResource(win32api.LoadResource(None, win32con.RT_ICON, 13), True)
然后贴在窗户上,只要你知道他的名字
windll.user32.SendMessageA(c_int(hwnd), c_int(win32con.WM_SETICON), c_int(win32con.ICON_SMALL), c_int(hicon))
LoadResource中使用的13常量已使用类似的工具检索。在ResourceHacker中,它对应于图标的文件夹名称。我不知道py2exe是如何计算的,也不知道是否有办法强制这个值
我也不知道是否有一个纯粹的TkInter方法可以做到这一点,以及图标是否可以在TkInter窗口中使用
我希望它有帮助您可以使用icon\u资源选项将图标嵌入到py2exe二进制文件中 然后可以使用windows api检索它
import win32gui, win32api, win32con
from ctypes import c_int, windll
hicon = win32gui.CreateIconFromResource(win32api.LoadResource(None, win32con.RT_ICON, 13), True)
然后贴在窗户上,只要你知道他的名字
windll.user32.SendMessageA(c_int(hwnd), c_int(win32con.WM_SETICON), c_int(win32con.ICON_SMALL), c_int(hicon))
LoadResource中使用的13常量已使用类似的工具检索。在ResourceHacker中,它对应于图标的文件夹名称。我不知道py2exe是如何计算的,也不知道是否有办法强制这个值
我也不知道是否有一个纯粹的TkInter方法可以做到这一点,以及图标是否可以在TkInter窗口中使用
我希望Tk图像有一个-data选项可以帮助您将图像嵌入到代码中。您只需对图像进行base64编码。我认为图像最初必须是GIF格式
下面是一个工作示例:
import Tkinter as tk
root = tk.Tk()
data = '''R0lGODlhIAAgALMAAAAAAAAAgHCAkC6LV76+vvXeswD/ANzc3DLNMubm+v/6zS9P
T6Ai8P8A/////////yH5BAEAAAkALAAAAAAgACAAAAS00MlJq7046803AF3ofAYY
fh8GIEvpoUZcmtOKAO5rLMva0rYVKqX5IEq3XDAZo1GGiOhw5rtJc09cVGo7orYw
YtYo3d4+DBxJWuSCAQ30+vNTGcxnOIARj3eTYhJDQ3woDGl7foNiKBV7aYeEkHEi
gnKFkk4ciYaImJqbkZ+PjZUjaJOElKanqJyRrJyZgSKkokOsNYa2q7mcirC5I5Fo
fsK6hcHHgsSgx4a9yzXK0rrV19gRADs=
'''
img = tk.PhotoImage(data=data)
label = tk.Label(image=img)
label.pack()
root.mainloop()
Tk图像有一个-data选项,可以将图像嵌入代码中。您只需对图像进行base64编码。我认为图像最初必须是GIF格式
下面是一个工作示例:
import Tkinter as tk
root = tk.Tk()
data = '''R0lGODlhIAAgALMAAAAAAAAAgHCAkC6LV76+vvXeswD/ANzc3DLNMubm+v/6zS9P
T6Ai8P8A/////////yH5BAEAAAkALAAAAAAgACAAAAS00MlJq7046803AF3ofAYY
fh8GIEvpoUZcmtOKAO5rLMva0rYVKqX5IEq3XDAZo1GGiOhw5rtJc09cVGo7orYw
YtYo3d4+DBxJWuSCAQ30+vNTGcxnOIARj3eTYhJDQ3woDGl7foNiKBV7aYeEkHEi
gnKFkk4ciYaImJqbkZ+PjZUjaJOElKanqJyRrJyZgSKkokOsNYa2q7mcirC5I5Fo
fsK6hcHHgsSgx4a9yzXK0rrV19gRADs=
'''
img = tk.PhotoImage(data=data)
label = tk.Label(image=img)
label.pack()
root.mainloop()
但是我如何使用它作为窗口图标呢?它需要文件名。我应该将其保存到临时目录并从那里加载吗。似乎api应该存在,以便将Photoimage用作iconbitmap的属性。但是,如何将其用作窗口图标呢?它需要文件名。我应该将其保存到临时目录并从那里加载吗。似乎api应该存在,以便将Photoimage用作iconbitmap的属性。