如果没有C:用户,我如何在tkinter中定位我的文件/图像



如何在不使用C:User直接定位的情况下生成一个在文件夹中定位图像的代码。这样,每当我将GUI发送给某人时,他们都可以运行它而不会出现任何错误。还有其他代码我可以使用吗?

photo = tk.PhotoImage(file="C:/Users/Me/Downloads/xxxx/Pics/xxxx.png")
label = tk.Label(window, image=photo)
label.place(x=0, y=0, relwidth=1, relheight=1) 

在字里行间读一点,听起来像:

  1. 您希望通过向用户发送目录或归档文件来分发代码,以便他们可以在自己的计算机上运行
  2. 此包中有要引用的资源

对于用户将此目录放置在其机器上的位置,您无法做出任何假设,因此您需要使用相对路径。

此行:

photo = tk.PhotoImage(file=os.path.join(downloadsDirectory,"xxxx","Pics","xxxx.png"))

似乎表明您的脚本被放置在用户的Downloads目录的文件夹xxxx中,这意味着资源的相对路径是Pics/xxxx.png

基于这些假设,您可以执行以下操作:

from pathlib import Path
script_dir = Path(__file__).parent.absolute()
resource_path = script_dir / "Pics" / "xxxx.png"
photo = tk.PhotoImage(file=str(resource_path))  # use resource_path.as_posix() instead if you want forward slashes on all platforms instead of native path format
label = tk.Label(window, image=photo)
label.place(x=0, y=0, relwidth=1, relheight=1) 

使用pathlibe,如果你想访问用户主页,它也可以在LINUX或MacOS中作为独立于平台的工作

import os
from pathlib import Path
downloadsDirectory = os.path.join(Path.home(),'Downloads')
photo = tk.PhotoImage(file=os.path.join(downloadsDirectory,"xxxx","Pics","xxxx.png"))
label = tk.Label(window, image=photo)
label.place(x=0, y=0, relwidth=1, relheight=1) 

相关内容

  • 没有找到相关文章

最新更新