You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

适配Python3项目时Tkinter相对路径加载图标失败的问题及解决

解决Python3中Tkinter无法加载相对路径图标的问题

刚碰到过一模一样的坑!把一个Python2的Tkinter项目适配到Python3时,原代码里的root.iconbitmap('icons/pypad.ico')怎么都加载不出图标——路径反复确认过是对的,但就是没效果。后来试了两种可行的解决方案:

方案一:拼接绝对路径

通过把相对路径转成绝对路径的方式绕开路径解析问题,定义一个简单的路径拼接函数就行:

import os

def rcpath(rel_path):
    return os.path.join(os.getcwd(), rel_path)

# 调用设置图标
root.iconbitmap(rcpath('icons/pypad.ico'))

这种方法直接解决了Python3下相对路径的解析问题,亲测能正常加载ico格式图标。

方案二:使用PhotoImage配合wm iconphoto命令

如果想追求更好的跨版本兼容性(Python2和Python3都能用),可以换用这种方式,不过需要把图标转成gif格式:

from tkinter import PhotoImage

# 创建gif格式的图标对象
rooticon = PhotoImage(file='icons/pypad.gif')
# 调用Tk底层命令设置窗口图标
root.tk.call('wm', 'iconphoto', root._w, rooticon)

这种方法不需要纠结相对路径的解析问题,适配性更强。

内容的提问来源于stack exchange,提问作者Alexey Orlov

火山引擎 最新活动