ubuntu中的Python 3 tkinter iconbitmap错误

Pho*_*nix 9 python ubuntu tkinter pycharm

好吧,我有这个:

import tkinter
gui = tkinter.Tk()
gui.iconbitmap(default='/home/me/PycharmProjects/program/icon.ico')
gui.mainloop()`
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,我得到一个错误说

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?"`
Run Code Online (Sandbox Code Playgroud)

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

Bry*_*ley 9

您需要将路径指定为第一个位置参数,或使用关键字参数"bitmap".它的文档记录很差,但需要位图参数; 你不能只给出default关键字参数.实际上,bitmap关键字参数已在python 3中删除.

但是,您只能在Windows上使用.ico文件.在ubuntu和其他Linux机器上,你需要使用.xbm文件,并需要在它前面添加"@"

这应该仅适用于Windows:

gui.iconbitmap('/home/me/PycharmProjects/program/icon.ico')
Run Code Online (Sandbox Code Playgroud)

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

gui.iconbitmap('@/home/me/PyCharmProjets/program/icon.xbm')
Run Code Online (Sandbox Code Playgroud)

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


小智 6

有趣的一点研究

png、svg、ico 不起作用

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

工具.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()
Run Code Online (Sandbox Code Playgroud)