ubuntu中的Python 3 tkinter iconbitmap错误

时间:2013-12-31 16:30:16

标签: 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 <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?"`

我正在尝试使用tkinter设置一个窗口,我已经制作了图标。我在ubuntu 13.10上安装了Pycharm。我尝试了各种各样的事情,从更改'/'到'\'并在前面添加Z://因为这是我的分区名称。但我仍然得到错误所以请帮助。

7 个答案:

答案 0 :(得分:8)

您需要将路径指定为第一个位置参数,或使用关键字参数&#34; bitmap&#34;。它的文档记录很差,但是需要位图参数;你不能只提供default关键字参数。事实上,bitmap关键字参数已在python 3中删除。

但是,您只能在Windows上使用.ico文件。在ubuntu和其他Linux机器上,您需要使用.xbm文件,并需要在其前面添加&#34; @&#34;

这应该仅适用于Windows:

gui.iconbitmap('/home/me/PycharmProjects/program/icon.ico')

在ubuntu上,它需要是这样的:

gui.iconbitmap('@/home/me/PyCharmProjets/program/icon.xbm')

您不能将.ico文件重命名为.xbm,它们是完全不同的文件格式。

答案 1 :(得分:4)

有趣的研究

png,svg,ico无效

我在我的机器上找到了一个xbm(xubuntu - Linux dist),多亏了sqlitemanager

tool.xbm

注意@ - 代码是对Lutz“Programming 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()

答案 2 :(得分:2)

在2018年仍然是Google排名较高的问题。 在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)

答案 3 :(得分:0)

有两种方法,

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图像。

请在此处查看详细信息 - https://stackoverflow.com/a/11180300

答案 4 :(得分:0)

我必须转换为XBM格式并使用以下root.iconbitmap('@ imagename.xbm'),但我的平台是Ubuntu,我发现我的os主题没有他的图像点....

答案 5 :(得分:0)

要在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()

答案 6 :(得分:-1)

import tkinter gui = tkinter.Tk() gui.iconbitmap() gui.mainloop()

代替gui.iconbitmap(默认='/ home / me / PycharmProjects / program / icon.ico')我使用的是gui.iconbitmap(),这对我有用。