飞道的博客

【Python】 _tkinter.TclError: bitmap "xzw.ico" not defined

675人阅读  评论(0)

【问题描述】

       在Python中可以使用pyinstaller命令将.py文件打包成.exe文件,但是成功打包成.exe文件后,在Windows系统上运行却出现了如下错误:

_tkinter.TclError: bitmap "xzw.ico" not defined

【问题原因】

       出现这个错误的原因是因为在我们的.py文件中引入了外部图片,打包成.exe文件放到桌面上运行,在同一目录下没有找到该图片。

【解决办法】

       此处提供两种解决办法:

       1、将图片放到指定位置,例如:程序中图片的位置目录修改成如下:

root.iconbitmap('C://Users//Machenike//Desktop//picture.ico')

       相应的将picture.ico图片也要放到桌面上,这样这个报错就会解决。此方法比较简单实用,但是有时候我们打包成.exe文件后并不希望再有额外的图片或文件,这样使用起来也会比较麻烦,于是这里提供另外一种方法。

       2、对图片进行base64转码操作。

       (1)将需要引入的图片进行base64转码,并保存成另外一个.py文件


  
  1. # base64转码,将转码后的文件存入icon.py中
  2. open_icon = open( "xzw.ico", "rb")
  3. b64str = base64.b64encode(open_icon.read())
  4. open_icon.close()
  5. write_data = "img = %s" % b64str
  6. f = open( "icon.py", "w+")
  7. f.write(write_data)
  8. f.close()

       (2)引入保存的.py文件,并进行解码添加图片操作


  
  1. from compressed_software.icon import img
  2. # 读取base64转码后的数据,并设置压缩图标
  3. picture = open( "picture.ico", "wb+")
  4. picture.write(base64.b64decode(img))
  5. picture.close()
  6. root.iconbitmap( 'picture.ico')
  7. os.remove( "picture.ico")

       (3)此时,打包再次进行测试,上述错误就会得到解决。

 

       你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题。


转载:https://blog.csdn.net/gdkyxy2013/article/details/103755124
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场