如何在gui中使用tkinter显示图像

2024-04-16 22:57:11 发布

您现在位置:Python中文网/ 问答频道 /正文

The given code is not working, as it gives the error of file not found for 'haridwar.jpg' though I tried putting it in in Python35 and also on desktop. Please help

import tkinter as tk  
from PIL import Image,ImageTk  
root = tk.Tk()  
root.title("display image")  
im=Image.open("haridwar.jpg")  
photo=ImageTk.PhotoImage(im)  
cv = tk.Canvas()  
cv.pack(side='top', fill='both', expand='yes')  
cv.create_image(10, 10, image=photo, anchor='nw')  
root.mainloop()

Tags: inimageimportasnotitrootcv
2条回答

我用一个我知道是正确的目录/文件名试过了你的代码,结果成功了。您的目录/文件名拼写有误,或者您的目录有误。

确保目录和文件名正确。

例如,我的桌面上有“Image.jpg”

import tkinter as tk  
from PIL import Image,ImageTk  
root = tk.Tk()  
root.title("display image")  
im=Image.open("C:/Users/<myname>/Desktop/Image.jpg")  #This is the correct location and spelling for my image location
photo=ImageTk.PhotoImage(im)  
cv = tk.Canvas()  
cv.pack(side='top', fill='both', expand='yes')  
cv.create_image(10, 10, image=photo, anchor='nw')  
root.mainloop()

根据你的问题判断,你可能没有把文件放在一个好的位置;而且你也没有提供到这些位置的路径。所以让我们把它分解一下。

你说你把图像放在Python35文件夹里了。如果不知道更多信息,我会想象您正在谈论位于C:\program files\Python35之类位置的python默认目录。

如果是这样,请更改行:

im=Image.open("haridwar.jpg") 

对此:

im=Image.open("C:\program files\Python35\haridwar.jpg")

虽然这不是一个适合你形象的地方。我们马上就到。

正如你所说,你也试过你的桌面。所以您需要提供一个到桌面的路径。

像这样的:

im=Image.open("C:/Users/your_user_folder/Desktop/haridwar.jpg")

这里也不是存放文件的好地方。

我们试试别的吧。让我们把文件放在工作的python目录中。

例如,如果main.py文件位于

"C:/myworkspace/my_program/main.py"

然后,您可以将该图像放在同一个my_program文件夹中,并且您的代码应该按原样工作。

如果您希望有一个仅用于图像的文件夹,则可以在如下所示的目录中有一个:

"C:/myworkspace/my_program/my_images/haridwar.jpg"

在这种情况下,您可以提供这样的短路径:

im=Image.open("./my_images/haridwar.jpg") 

注意.文件夹前面的/my_image。这用于告诉Python它可以在当前工作目录中查找文件夹。

相关问题 更多 >