【问题标题】:Loading an image from a folder that is in the same folder as the program从与程序位于同一文件夹中的文件夹中加载图像
【发布时间】:2019-02-10 01:21:57
【问题描述】:

我的文件在我的程序上运行。但是,我不确定如何从特定文件夹中的文件加载图像。至此是我下面的代码,只能直接在程序文件本身的同一个文件夹下获取图片。

from tkinter import *

root = Tk()

canvas = Canvas(root, width=500, height=500)
canvas.pack()

imagetest = PhotoImage(file="giftest.gif")
canvas.create_image(250, 250, image=imagetest)

root.mainloop()

我在this YouTube video 上找到了一些关于如何将文件链接到特定文件夹的信息,但它只告诉了整个目的地。如果我将包含该程序的文件夹移动到其他目的地,我不能保证该视频显示的整个文件夹目标内容将始终有效;移动该文件夹会破坏程序中的图像链接。

是否有某种方法可以从与程序位于同一文件夹中的文件夹中加载图像?我记得 HTML 也可以做这种事情,但我不知道 Python 是否也可以。

【问题讨论】:

  • 你可以尝试使用像file="./giftest.gif"这样的相对路径
  • 相对路径的东西开始解决我的问题。但是,我还需要知道如何指定相对于我的图像的特定文件夹。
  • ***你的答案在这里:***
    stackoverflow.com/questions/47357090/…

标签: python python-3.x tkinter


【解决方案1】:

如果绝对路径不固定,您可以随时在代码中构建文件路径。

这将结合当前目录的绝对路径和文件的相对路径。只要图像的相对位置始终与 python 脚本相同,这将始终有效.

import os
directory_path = os.path.dirname(__file__)
file_path = os.path.join(directory_path, 'relative_path/file')

请注意,directory_path 是您的 python 脚本的目录路径。

【讨论】:

  • “relative_path”是指文件夹名吗?
  • 是的。很抱歉造成混淆,我使用 relative_path 以防它是嵌套文件夹。请记住,文件夹名称前不需要“/”。
  • 是否可以对多个不同的文件执行此操作?如果我要显示多个文件,我将如何调整它?
  • 您能说明一下您的用例吗?您的文件是分散在不同的位置还是在同一个文件夹中,例如 ./images/?
【解决方案2】:

您可以在 python 文件中指定包含图像的文件夹,例如"folder/giftest.gif"。这是一个示例:

from tkinter import *

root = Tk()

canvas = Canvas(root, width=500, height=500)
canvas.pack()

imagetest = PhotoImage(file="folder/subfolder/giftest.gif")  #python file is not in "folder" but "folder" is in your python file directory
canvas.create_image(250, 250, image=imagetest)

root.mainloop()

【讨论】:

  • “文件夹”是程序本身所在文件夹的名称吗?而“子文件夹”是文件夹的文件夹名称?
  • 实际上,当我测试程序时,似乎只需要输入文件夹的文件夹名称,然后输入文件名即可从文件夹的文件夹中加载我的图像;尝试输入我的文件夹名称和我的文件夹名称只会出错。
  • @RonZhang Python 文件不在folderfolder 在python 文件目录中。希望你能理解。
猜你喜欢
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2013-02-04
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
相关资源
最近更新 更多