-1

給定的代碼無法正常工作,因爲它提供了文件未找到 爲「haridwar.jpg」雖然我試圖把它在Python35也 桌面上的錯誤使用Tkinter的顯示圖像。請幫助如何在GUI

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

提供錯誤時,請提供完整的引用。也歡迎堆棧溢出。如果您收到文件未找到錯誤,可能是因爲您的文件與您的程序不在同一目錄中。你能提供你的主python文件的位置和你的圖像文件的位置? –

+0

現在,請嘗試使用完整路徑打開文件。也嘗試打印當前的工作目錄。另外,你拼寫正確的文件的名稱?你的意思是hardware.jpg?你錯過了一個e。你有額外的我。 (英文版) –

+0

@SierraMountainTech,我試着把它放在與我的.py scipt「C:\ Users \ SAURAV DAS \ AppData \ Local \ Programs \ Python \ Python35 \ projects」相同的工作目錄中,但仍顯示相同的錯誤 –

回答

2

你的問題,你可能不會有一個很好的位置,文件判斷上;你也沒有提供通往這些地點的路徑。所以讓我們稍微分解一下。

你說你把圖像放在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

我使用目錄/文件名,我知道是正確的嘗試你的代碼,它的工作原理。你的目錄/文件名拼寫有誤,或者你的目錄錯誤。

確保您的目錄和文件名正確無誤。

例如,我有「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() 
+0

爲什麼選擇投票? – jacoblaw

+0

downvote是因爲你沒有解決OP問題。你所做的只是複製OP代碼並告訴他代碼工作正常,並且他們必須有拼寫錯誤。這個問題很可能是OP對打開文件的工作方式的理解的一個問題,而不是與代碼本身有關,所以對於一個答案,您應該以OP可以學習的方式將其分解,而不僅僅是提供複製粘貼答案給壞的解決方案(不好的解決方案是將文件放在桌面上而不是工作目錄中) –

+0

好的,我會記住徹底解釋他們爲什麼做的不正確和正確/解釋不好的做法。 – jacoblaw