dreaminawake 发表于 2022-9-10 14:25:12

tkinter的iconbitmap是不是在linux上不能用?

我的系统是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上正常,想知道为什么?

Twilight6 发表于 2022-9-10 14:30:00



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

dreaminawake 发表于 2022-9-10 14:53:33

不是路径问题。

阿奇_o 发表于 2022-9-10 15:32:49

dreaminawake 发表于 2022-9-10 14:53
不是路径问题。

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') 设置。

dreaminawake 发表于 2022-9-10 16:13:15

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

或者,尝试用PIL ...

不报错,但还是不显示。

Twilight6 发表于 2022-9-10 16:15:34



我直接执行你的代码也会报同样的错误,win10,我没有更改路径,所以我怀疑是路径问题

dreaminawake 发表于 2022-9-10 16:17:08

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

win10路径需要用\\来分割路径。

Twilight6 发表于 2022-9-10 16:21:34

dreaminawake 发表于 2022-9-10 16:17
win10路径需要用\\来分割路径。



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

dreaminawake 发表于 2022-9-10 16:27:42

Twilight6 发表于 2022-9-10 16:21
你加上 r 原始字符串时 , Python 中\和 /windows均可使用

不是路径问题,我用PIL的Image.open()可以打开,也可以显示。

dreaminawake 发表于 2022-9-10 16:30:52

Twilight6 发表于 2022-9-10 16:21
你加上 r 原始字符串时 , Python 中\和 /windows均可使用

默认的小羽毛图标也不显示

Twilight6 发表于 2022-9-10 16:32:42

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



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



正常执行,无报错。

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




dreaminawake 发表于 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()
就出错了,没用绝对路径,总不该再错吧?

Twilight6 发表于 2022-9-10 16:57:56

dreaminawake 发表于 2022-9-10 16:54
确实不是路径问题,你看,我的

from PIL import Image



好吧,那你试试用其他办法设置图标看看?参考文章:https://www.delftstack.com/zh/howto/python-tkinter/how-to-set-window-icon-in-tkinter/#:~:text=import%20tkinter%20as%20tk%20root%20%3D%20tk.Tk%28%29%20root.iconbitmap%28%27%2Fpath%2Fto%2Fico%2Ficon.ico%27%29,%E6%88%96%20jpg%20%E7%AD%89%E7%B1%BB%E5%9E%8B%EF%BC%8C%E5%90%A6%E5%88%99%EF%BC%8C%E5%9B%BE%E5%83%8F%E4%B8%8D%E4%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%BA%E5%9B%BE%E6%A0%87%E3%80%82%20%E4%B8%8A%E5%9B%BE%E6%98%BE%E7%A4%BA%E4%BA%86%E4%BD%BF%E7%94%A8%E5%9C%A8%20iconbitmap%20%E4%BD%BF%E7%94%A8%20ico%20%E7%B1%BB%E5%9E%8B%E3%80%82


dreaminawake 发表于 2022-9-10 17:24:14

Twilight6 发表于 2022-9-10 16:57
好吧,那你试试用其他办法设置图标看看?参考文章:https://www.delftstack.com/zh/howto/python-tki ...

多谢啦,可以做到不报错,以及在最小化的任务栏显示,但窗口还是空白。

Twilight6 发表于 2022-9-10 17:47:28

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



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

页: [1]
查看完整版本: tkinter的iconbitmap是不是在linux上不能用?