在编写脚本时,我需要一个带有小垃圾桶的按钮作为图标。我使用下面显示的代码:
# Python 3.7.1
import tkinter as tk
master = tk.Tk()
photo = tk.PhotoImage(file="bin.png")
icon_button = tk.Button(master, image=photo)
icon_button.pack()
发生以下错误:
_tkinter.TclError: image "pyimage1. doesn't exist
由于我将bin.png
指定为图像文件,因此我无法真正理解错误中如何指定pyimage1
。
经过一些调试后,我意识到PhotoImage
返回字符串pyimage1
,因此将"pyimage1"
作为参数提供给Button
,但是我仍然没有不知道如何解决我的问题。
答案 0 :(得分:-1)
问题是相对路径将不被接受,即如果您在bin.png
中有C:\
,则应按以下方式进行操作-
tk.PhotoImage(file='C:\\bin.png')
现在,如果您仍然想使用相对路径,则可以执行以下操作-
import tkinter as tk
import os
Win = tk.Tk()
Img = tk.PhotoImage(file=os.path.abspath('bin.png')
tk.Button(Win, image=Img).pack()
Win.mainloop()
或使用此-
import sys, os
def get_path(file):
if not hasattr(sys, ''):
file = os.path.join(os.path.dirname(__file__), file)
return file
else:
file = os.path.join(sys.prefix, file)
return file
它只是获取文件的完整路径。
现在,使用功能-
...file=get_path('bin.png'))