当前位置: 首页 > 面试题库 >

为什么设置窗口图标时未定义.ico文件?

聂涛
2023-03-14
问题内容

当我尝试使用以下代码将左上角的窗口图标从难看的红色“ TK”更改为我自己的收藏夹图标时,Python抛出错误:

from tkinter import *
root = Tk()

#some buttons, widgets, a lot of stuff

root.iconbitmap('favicon.ico')

这应该将图标设置为“ favicon.ico”(根据网络上的许多论坛帖子)。但是不幸的是,所有这些行所做的只是抛出以下错误:

Traceback (most recent call last):
  File "d:\ladvclient\mainapp.py", line 85, in <module>
    root.iconbitmap(bitmap='favicon.ico')
  File "C:\Python33\lib\tkinter\__init__.py", line 1637, in wm_iconbitmap
    return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "favicon.ico" not defined

我已经做了:

  • 我检查了路径-一切都是100%正确
  • 我尝试了其他文件格式,例如-.png或均.bmp无效
  • 我在许多网站上查询了这个问题

第三点,我最喜欢的Tkinter网站effbot.org告诉我Windows忽略了该iconbitmap功能。但这并不能解释为什么会引发错误!

有一些“骇人的”方法可以避免该问题,但是都不是针对Python 3.x编写的。

所以我的最后一个问题是:是否可以使用Python 3.x和Tkinter获得自定义图标?

另外,不要告诉我应该使用另一个GUI库。我希望我的程序可以在每个平台上运行。我还想要一个编码版本,而不是py2exesth解决方案。


问题答案:

您需要与favicon.ico脚本位于同一文件夹或字典中,因为python仅在当前字典中搜索,或者您可以输入完整的路径名。例如,这有效:

from tkinter import *
root = Tk()

root.iconbitmap(r'c:\Python32\DLLs\py.ico')
root.mainloop()

但这会因您的错误而爆炸:

from tkinter import *
root = Tk()

root.iconbitmap('py.ico')
root.mainloop()


 类似资料:
  • 当我从Netbeans运行项目时,它工作正常:图标出现在窗口的左上角和任务栏中。图像位于项目的根目录中。 当我清理和构建项目时,它生成两个安装程序:一个exe和一个MSI;当我安装应用程序并打开它时,窗口没有图标sicadcam.png,它有默认的java徽标图标。

  • 问题内容: 我正在使用Vue.js创建一个组件。 当我引用中的任何所述的生命周期钩(,,等等)它的计算结果为: 我的计算属性内部也发生了同样的事情: 我收到以下错误: 未捕获的TypeError:无法读取未定义的属性“ bar” 为什么要在这些情况下进行评估? 问题答案: 这两个示例都使用arrow函数,该函数绑定到与Vue实例不同的上下文。 根据文档: 不要在实例属性或回调(例如)上使用箭头功能

  • 提前谢了。

  • 问题内容: 最近,我一直在开发此网站,并试图在其中添加超棒的字体图标,以便其可扩展。 问题是他们没有露面。 看一下HTML: 要么 我确实把样式表引用放在了头上。 我不知道为什么他们没有出现。 这里是参考: 好了,这是完整的html: 问题答案: 根据您的参考,您有: 具体来说,就是这个部分。 但是,在您的完整html下是这样的: 您是否尝试过更换与您的全HTML变成这样?

  • The BrowserWindow module is the foundation of your Electron application, and it exposes many APIs that can change the look and behavior of your browser windows. In this tutorial, we will be going over

  • 问题内容: 我知道Node.js中不存在,但是我在客户端和服务器上都使用React和相同的代码。我用来检查是否存在的任何方法都可以使我: 未捕获ReferenceError:未定义窗口 如何解决我做不到的事实? 问题答案: Sawtaytoes知道了。我将运行您在componentDidMount()中拥有的任何代码,并将其包含在以下内容中: 如果在React渲染组件时仍未创建窗口对象,则始终可以