鱼C论坛

 找回密码
 立即注册
查看: 2987|回复: 14

[已解决]tkinter的iconbitmap是不是在linux上不能用?

[复制链接]
发表于 2022-9-10 14:25:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我的系统是deepin系统,学习tkinter的时候,这段代码
import tkinter as tk
root = tk.Tk()
root.title("hello")
root.iconbitmap(r"/home/haha/Desktop/books/icon.ico")
root.mainloop()
出现了TclError: bitmap "/home/yhl/Desktop/books/icon.ico" not defined错误,windows上正常,想知道为什么?
最佳答案
2022-9-10 16:57:56
dreaminawake 发表于 2022-9-10 16:54
确实不是路径问题,你看,我的

from PIL import Image



好吧,那你试试用其他办法设置图标看看?参考文章:https://www.delftstack.com/zh/ho ... B%E5%9E%8B%E3%80%82


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-10 14:30:00 | 显示全部楼层


会不会是文件路径问题?检查检查

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-10 14:53:33 | 显示全部楼层
不是路径问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-10 15:32:49 | 显示全部楼层

Linux上可能不太支持属于win系的bitmap的ico,可以考虑用png或gif格式的图标,然后用
root.tk.call('wm', 'iconphoto', root._w, tk.PhotoImage(file='test.png'))
或者,尝试用PIL的Image先 另存为 另外一个ico图片(可能只是原ico图片的存储格式稍微有些不一样,而造成的无法读取),然后再试试能不能iconbimap('new_icon.ico') 设置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-10 16:13:15 | 显示全部楼层
阿奇_o 发表于 2022-9-10 15:32
Linux上可能不太支持属于win系的bitmap的ico,可以考虑用png或gif格式的图标,然后用

或者,尝试用PIL ...

不报错,但还是不显示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-10 16:15:34 | 显示全部楼层


我直接执行你的代码也会报同样的错误,win10,我没有更改路径,所以我怀疑是路径问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-10 16:17:08 | 显示全部楼层
Twilight6 发表于 2022-9-10 16:15
我直接执行你的代码也会报同样的错误,win10,我没有更改路径,所以我怀疑是路径问题

win10路径需要用\\来分割路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-10 16:21:34 | 显示全部楼层
dreaminawake 发表于 2022-9-10 16:17
win10路径需要用\\来分割路径。




你加上 r 原始字符串时 , Python 中  \  和 /  windows  均可使用

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-10 16:27:42 | 显示全部楼层
Twilight6 发表于 2022-9-10 16:21
你加上 r 原始字符串时 , Python 中  \  和 /  windows  均可使用

不是路径问题,我用PIL的Image.open()可以打开,也可以显示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-10 16:30:52 | 显示全部楼层
Twilight6 发表于 2022-9-10 16:21
你加上 r 原始字符串时 , Python 中  \  和 /  windows  均可使用

默认的小羽毛图标也不显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-10 16:32:42 | 显示全部楼层
dreaminawake 发表于 2022-9-10 16:27
不是路径问题,我用PIL的Image.open()可以打开,也可以显示。



我测试了下,我自己找了个图片,测试代码执行:

Snipaste_2022-09-10_16-30-38.png

正常执行,无报错。

我将路径文件名随意更改后:

2.png


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-10 16:54:24 | 显示全部楼层
Twilight6 发表于 2022-9-10 16:32
我测试了下,我自己找了个图片,测试代码执行:

确实不是路径问题,你看,我的

from PIL import Image
img = Image.open("icon.ico")
img.show()
可以正常显示。但
import tkinter as tk
root = tk.Tk()
root.title("hello")
root.iconbitmap("icon.ico")
root.mainloop()
就出错了,没用绝对路径,总不该再错吧?
error.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-10 16:57:56 | 显示全部楼层    本楼为最佳答案   
dreaminawake 发表于 2022-9-10 16:54
确实不是路径问题,你看,我的

from PIL import Image



好吧,那你试试用其他办法设置图标看看?参考文章:https://www.delftstack.com/zh/ho ... B%E5%9E%8B%E3%80%82


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-10 17:24:14 | 显示全部楼层
Twilight6 发表于 2022-9-10 16:57
好吧,那你试试用其他办法设置图标看看?参考文章:https://www.delftstack.com/zh/howto/python-tki ...

多谢啦,可以做到不报错,以及在最小化的任务栏显示,但窗口还是空白。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-10 17:47:28 | 显示全部楼层
dreaminawake 发表于 2022-9-10 17:24
多谢啦,可以做到不报错,以及在最小化的任务栏显示,但窗口还是空白。



好吧,可惜了,没能帮助到你

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 17:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表