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

时间:2017-06-12 17:17:13

标签: python tkinter python-imaging-library python-3.5 tkinter-canvas

  

给定的代码不起作用,因为它给出了找不到文件的错误   为' haridwar.jpg'虽然我尝试将它放入Python35中   在桌面上。请帮忙

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()

2 个答案:

答案 0 :(得分:6)

根据您的问题判断,您可能没有将文件放在合适的位置;你也没有提供这些地点的路径。所以让我们分解一下。

您说您将图片放在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它可以查看文件夹的当前工作目录。

答案 1 :(得分:3)

我使用目录/文件名尝试了你的代码,我知道这是正确的,并且它有效。您的目录/文件名拼写错误,或者您的目录错误。

确保目录和文件名正确无误。

例如,我的桌面上有“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()