Tkinter 无法打开图像

问题描述

出于某种原因,Tkinter 无法打开我的图像。如果我不添加 from tkinter import *,它会显示错误消息:

没有 from tkinter import *错误消息:

C:\Users\NG>python e:/PythonTkinter/app.py
Traceback (most recent call last):
  File "e:/PythonTkinter/app.py",line 12,in <module>
    logo = Image.open('logo.png')
  File "C:\Users\NG\anaconda3\lib\site-packages\PIL\Image.py",line 2891,in open
    fp = builtins.open(filename,"rb")
FileNotFoundError: [Errno 2] No such file or directory: 'logo.png'

如果我添加 from tkinter import * 如下所示,它会显示如下所示的错误消息。

代码

import tkinter as tk
import PyPDF2
from PIL import Image,ImageTk
from tkinter import *

# begaining of our UI window
root = tk.Tk()

canvas = tk.Canvas(root,width=600,height=300)
canvas.grid(columnspan=3)

# Adding logo
# logo = ImageTk.PhotoImage(Image.open("logo.png"))
logo = Image.open("logo.png")
logo = ImageTk.PhotoImage(logo)
logo_label = tk.Label(image=logo)
loogo_label.image = logo
logo_label.grid(column=1,row=0)

# ending of our UI window
root.mainloop()

带有 from tkinter import *错误消息:

C:\Users\NG>python e:/PythonTkinter/app.py
Traceback (most recent call last):
  File "e:/PythonTkinter/app.py",line 14,in <module>
    logo = Image.open("logo.png")
AttributeError: type object 'Image' has no attribute 'open'

图像就在这个 python 文件所在的同一文件夹中。

enter image description here

我做错了什么? 帮助!

解决方法

说明:-

您可能应该了解什么是相对路径。当使用相对路径时,它不是相对于 python 文件的位置,而是你运行 python 文件的位置。您正在从以下位置运行文件:

C:\用户\NG

但是你的python文件和你正在使用的图像在里面:

e:/PythonTkinter/app.py

解决方案:-

所以在这里,您可以将运行代码的位置更改为带有图像文件的位置,也可以将图像复制到运行 py 文件的位置(即,'C:\Users\ NG')。


就第二个错误而言,说 from x import * 从来都不是一个好主意。当您从 tkinter 导入 '*' 时,它会将 PIL.Image 替换为 tkinter.Image。因此错误。所以要么删除那条线,要么把它移到最上面。推荐的导入是:

import tkinter as tk
import PyPDF2
from PIL import Image,ImageTk

您在这里只使用了第一个导入,所以我认为使用 from tkinter import * 没有意义,所以只需将其删除。

,

您可以简单地执行以下操作

from tkinter import *

window = Tk() # instantiate an instance of a window for us
window.geometry("500x500")

#creating a photo image from png photo
icon = PhotoImage(file='GUI using Python\\flower.png')
window.iconphoto(True,icon)

window.mainloop()

从注释开始(从png照片创建照片图像),你在文件参数中给一个值相对路径而不是完整路径,还要注意反斜杠,你应该写两个反斜杠,不需要全部除非您将它们用于其他任务,否则您正在使用这些库。

,

您的 PIL 导入应该在 'from tkinter import *' 之后。还要确保与图像在同一目录中