Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将类似文件的对象用于Tk().iconbitmap()_Python_Tkinter_Py2exe - Fatal编程技术网

Python 将类似文件的对象用于Tk().iconbitmap()

Python 将类似文件的对象用于Tk().iconbitmap(),python,tkinter,py2exe,Python,Tkinter,Py2exe,我正在使用Tkinter编写一个程序,最终将使用py2exe编译成exe。我想在其中包含一个图标,以便在windows上使用。它将是相同的一个,因为我已经包装为图标的exe。有没有办法通过定位exe文件或使用类似文件的对象在Tkinter中包含图标?我知道win32api可以找到当前正在运行的exe文件,但我相信py2exe会将原始文件提取到temp,然后运行它,因此无法通过这种方式找到原始exe。我还想把它放在一个include文件夹中,但我不知道cwd的设置是否正确。提前谢谢你的帮助 您可以

我正在使用Tkinter编写一个程序,最终将使用py2exe编译成exe。我想在其中包含一个图标,以便在windows上使用。它将是相同的一个,因为我已经包装为图标的exe。有没有办法通过定位exe文件或使用类似文件的对象在Tkinter中包含图标?我知道win32api可以找到当前正在运行的exe文件,但我相信py2exe会将原始文件提取到temp,然后运行它,因此无法通过这种方式找到原始exe。我还想把它放在一个include文件夹中,但我不知道cwd的设置是否正确。提前谢谢你的帮助

您可以使用icon\u resources选项将图标嵌入到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窗口中使用


我希望它有帮助

您可以使用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的属性。