ubuntu中的Python3 tkinter iconbitmap错误

ubuntu中的Python3 tkinter iconbitmap错误,python,ubuntu,tkinter,pycharm,Python,Ubuntu,Tkinter,Pycharm,我有这个: import tkinter gui = tkinter.Tk() gui.iconbitmap(default='/home/me/PycharmProjects/program/icon.ico') gui.mainloop()` 但是当我跑的时候,我得到一个错误,说 Traceback (most recent call last): File "/home/spencer/PycharmProjects/xMinecraft/GUI.py", line 17, in <

我有这个:

import tkinter
gui = tkinter.Tk()
gui.iconbitmap(default='/home/me/PycharmProjects/program/icon.ico')
gui.mainloop()`
但是当我跑的时候,我得到一个错误,说

Traceback (most recent call last):
File "/home/spencer/PycharmProjects/xMinecraft/GUI.py", line 17, in <module>
gui.iconbitmap(default='/home/me/PycharmProjects/program/icon.ico')
File "/usr/lib/python3.3/tkinter/__init__.py", line 1638, in wm_iconbitmap
return self.tk.call('wm', 'iconbitmap', self._w, '-default', default)
_tkinter.TclError: wrong # args: should be "wm iconbitmap window ?bitmap?"`
回溯(最近一次呼叫最后一次):
文件“/home/spencer/PycharmProjects/xMinecraft/GUI.py”,第17行,在
gui.iconbitmap(默认值='/home/me/PycharmProjects/program/icon.ico')
wm_iconbitmap中的文件“/usr/lib/python3.3/tkinter/_init__uuu.py”,第1638行
返回self.tk.call('wm','iconbitmap',self.\u w',-default',default)
_tkinter.TclError:错误#args:应为“wm iconbitmap窗口?位图?”`

我正在尝试使用tkinter设置我制作的窗口的图标。我正在使用安装在ubuntu 13.10上的Pycharm。我尝试过各种方法,从将“/”改为“\”到在前面添加一个Z://因为这是我分区的名称。但是我仍然会遇到错误,请帮助。

您需要指定路径作为第一个位置参数,或者使用关键字参数“位图”。它的文档记录很差,但需要位图参数;不能只给出
默认值
关键字参数。实际上,Python3中的
bitmap
关键字参数已被删除

但是,您只能在windows上使用.ico文件。在ubuntu和其他linux设备上,您需要使用一个.xbm文件,并且需要在其前面加上“@”

这仅适用于windows:

gui.iconbitmap('/home/me/PycharmProjects/program/icon.ico')
在ubuntu上,它需要像这样:

gui.iconbitmap('@/home/me/PyCharmProjets/program/icon.xbm')
不能将.ico文件重命名为.xbm,它们是完全不同的文件格式

有两种方法

1) 在ubuntu中使用xbm文件,因为ubuntu将无法读取ico文件。但问题是xbm只能显示黑白图像

2) 使用tkinter.photoimage显示图标图像,如下所示

 img = PhotoImage(file='your-icon')

 root.tk.call('wm', 'iconphoto', root._w, img)
这里的问题是photoimage只能读取GIF和PGM/PPM图像


请参见此处的详细信息-

有趣的研究

png、svg、ico不起作用

多亏了SQLItemManager,我在我的机器(xubuntu-LinuxDist)上找到了一个xbm

tool.xbm

注意@-代码是对Lutz“编程Python”第1章tkinter103.py的修改

from tkinter import *
from tkinter.messagebox import showinfo

def reply(name):
    showinfo(title='Reply', message='Hello %s!' % name)

top = Tk()
#img = PhotoImage(file='py-blue-trans-out.ico') #no

top.title('Echo')
top.iconbitmap('@tool.xbm') #yes
#top.iconphoto(True, PhotoImage(file='tool.xbm')) #no

Label(top, text="Enter your name:").pack(side=TOP)
ent = Entry(top)
ent.pack(side=TOP)
btn = Button(top, text="Submit", command=(lambda: reply(ent.get())))
btn.pack(side=LEFT)

top.mainloop()
导入tkinter
gui=tkinter.Tk()
gui.iconbitmap()
gui.mainloop()


我用gui.iconbitmap()代替gui.iconbitmap(默认值='/home/me/PycharmProjects/program/icon.ico'),这对我来说很有用。

我必须转换成XBM格式并使用以下根.iconbitmap('@imagename.XBM')然而,我的平台是Ubuntu,我发现我的操作系统主题没有图像的位置……

在2018年仍然是谷歌的一个高级问题。 在python3中什么对我有效 在Windows中使用ico,在Linux中使用gif:

if ( sys.platform.startswith('win')): 
    gui.iconbitmap('logo_Wicon.ico')
else:
    logo = PhotoImage(file='logo.gif')
    gui.call('wm', 'iconphoto', gui._w, logo)

要在linux中显示彩色图标,需要如下所示:

import tkinter
window = tkinter.Tk()
window.title("My Application")
img = tkinter.PhotoImage(file='~/pharmapos/pharmapos.png')
window.tk.call('wm', 'iconphoto', window._w, img)
window.mainloop()

为什么使用tkinter而不是最新的GTK3@Allendar:你说它在Python3中不能正常工作是什么意思?它很好用。我会给GTK3一个机会,谢谢你们。很明显你们在Python 3中已经很久没有使用tkinter了。在Python2中,对于全方位的GUI开发来说,它不是那么好。在Python3中,它完全是垃圾。我在这里不是悲观的。这只是一个痛苦的现实。@Allendar:你说Tkinter在Python3中工作不好已经得到证实。你能提供该确认书的链接吗?我相信那些在工具箱之间做出决定的人会从你的发现中受益。@Phoenix:我认为你说的不可能。您可能会得到不同的错误,但不会得到相同的错误。@Phoenix:是的,那是不同的错误。在回复之前,我没有看到您在ubuntu而不是windows上尝试此操作(我假设windows是因为.ico扩展名)。你需要给它一个.xbm文件,而不是.ico文件。嗯,我把它转换成了.xbm,它全黑,还有一点白色的曲线。@Phoenix:xbm是单色格式——像素可以是黑色的,也可以是白色的。将彩色图像转换为xbm几乎总是会导致图像质量差。所以我不能使用彩色图标?在Ubuntu 20.04(python3.6)中尝试代码的一部分。在程序列表的右图标(在屏幕的左侧),在顶部面板中拉伸只有黑白颜色的图标(左至语言-设置-…)。有更新吗?