带有图标的Tkinter按钮:`_tkinter.TclError:图像不存在`

时间:2019-11-01 16:36:13

标签: python-3.x tkinter

在编写脚本时,我需要一个带有小垃圾桶的按钮作为图标。我使用下面显示的代码:

# 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,但是我仍然没有不知道如何解决我的问题。

1 个答案:

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