dragov 发表于 2023-5-18 08:58:19

tkinter 题目3 ---- iconbitmap的相对路径


from tkinter import *
root=Tk()
root.iconbitmap("u.ico")
mainloop()

运行后,报错 TclError: bitmap "u.ico" not defined

1、python 安装于 c://Users//高衍龙//AppData//Local//Programs//Python//Python310

2、u.ico 文件保存于 c://Users//高衍龙//AppData//Local//Programs//Python//Python310//Lib//tkinter//u.ico

3、程序中第3句如果使用绝对路径的话,就运行正常 ,如 root.iconbitmap('c://Users//高衍龙//AppData//Local//Programs//Python//Python310//Lib//tkinter//u.ico')

isdkz 发表于 2023-5-18 08:58:45

在Tkinter中,iconbitmap()方法用于设置窗口的图标。当使用相对路径时,文件的查找路径是相对于当前工作目录的。因此,如果要使用相对路径来设置图标,需要将相对路径转换为基于当前工作目录的绝对路径。可以使用os模块中的os.path.abspath()方法来实现。

以下是代码示例:

import os
from tkinter import *

root = Tk()
# 获取当前脚本所在目录的绝对路径
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接图标文件的相对路径
icon_path = os.path.join(script_dir, "u.ico")
# 设置图标
root.iconbitmap(icon_path)
mainloop()


在上述代码中,os.path.abspath(__file__)返回当前脚本的绝对路径,os.path.dirname()方法返回该路径的目录部分,然后使用os.path.join()方法将图标文件的相对路径拼接到该目录中,得到完整的图标文件路径。最后,将该路径传递给iconbitmap()方法即可设置图标。

dragov 发表于 2023-5-18 09:03:53

isdkz 发表于 2023-5-18 08:58
在Tkinter中,iconbitmap()方法用于设置窗口的图标。当使用相对路径时,文件的查找路径是相对于当前工作目 ...

按照您提供的示例代码,运行报错 !

小伤口 发表于 2023-5-18 17:03:28

dragov 发表于 2023-5-18 09:03
按照您提供的示例代码,运行报错 !

相对路径指的是相对于你的项目的路径,而不是你安装python的路径{:7_132:}
你应该将你的ico图片的路径跟你的项目路径放在一起
也就是把图片跟这段代码
from tkinter import *
root=Tk()
root.iconbitmap("u.ico")
mainloop()
的文件放在一个目录上
像这样


这样就运行正常啦{:7_125:}

页: [1]
查看完整版本: tkinter 题目3 ---- iconbitmap的相对路径