【问题标题】:How to display an image using tkinter in gui如何在 gui 中使用 tkinter 显示图像
【发布时间】:2017-11-14 06:28:27
【问题描述】:

给定的代码不起作用,因为它给出了找不到文件的错误 对于 '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()

【问题讨论】:

  • 当提供错误时,请提供完整的引用。也欢迎堆栈溢出。如果您收到文件未找到错误,可能是因为您的文件与程序不在同一目录中。你能提供你的主要python文件的位置和你的图像文件的位置吗?
  • 现在,尝试使用完整路径打开文件。也尝试打印当前工作目录。另外,您是否正确拼写了文件名?你是说hardware.jpg吗?您缺少一个 e。你有一个额外的 i。 (英语)
  • @SierraMountainTech,我尝试将它放在与我的 .py scipt "C:\Users\SAURAV DAS\AppData\Local\Programs\Python\Python35\projects" 相同的工作目录中,但仍然显示同样的错误
  • @RobertJacobs,文件的名称是正确的,它以一个地方命名,因为我没有很多图像。我的问题在于指定路径。

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


【解决方案1】:

从您的问题来看,您可能没有将文件放在一个好的位置;您也没有提供通往这些位置的路径。所以让我们把它分解一下。

您说您将图像放在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 它可以在其当前工作目录中查找该文件夹。

【讨论】:

    【解决方案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()
    

    【讨论】:

    • 否决票是因为您没有解决 OPs 问题。你所做的只是复制 OPs 代码并告诉他代码可以正常工作,而且它们一定有拼写错误。这个问题很可能是 OP 理解打开文件的工作原理而不是代码本身的问题,因此对于答案,您应该以 OP 可以学习的方式分解它,而不仅仅是提供复制粘贴答案不好的解决方案。 (不好的解决方案是将文件放在桌面上而不是在工作目录中)
    • 好的,我会牢记彻底解释为什么他们的做法不正确,并纠正/解释不良做法。
    • 听起来不错。如果您花时间为您的答案添加一些细节,我将放弃我的反对意见。
    • 所以你的图片和脚本都在上面的文件夹里?您是否使用与原始帖子中完全相同的代码,或者有任何更改,包括此行中的文件名:im=Image.open("haridwar.jpg") 如果您现在使用文件的完整路径,您是否在路径中使用 / 或 \?
    • 如果文件夹projects 是您的main.py 程序所在的位置,那么您可以使用此行:im=Image.open("haridwar.jpg") 。这应该摆脱文件未找到错误。请记住,如果您使用的是完整文件路径,则可能需要为每个文件夹分隔符使用 \\ 而不是 \
    猜你喜欢
    • 2020-11-28
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多