如何在不使用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)
在字里行间读一点,听起来像:
- 您希望通过向用户发送目录或归档文件来分发代码,以便他们可以在自己的计算机上运行
- 此包中有要引用的资源
对于用户将此目录放置在其机器上的位置,您无法做出任何假设,因此您需要使用相对路径。
此行:
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)