簡體   English   中英

ubuntu中的Python 3 tkinter iconbitmap錯誤

[英]Python 3 tkinter iconbitmap error in ubuntu

好吧,我有這個:

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://,因為那是我的分區名稱。 但我仍然收到錯誤,所以請幫忙。

您需要將路徑指定為第一個位置參數,或者使用關鍵字參數“位圖”。 它的文檔記錄很差,但是需要 bitmap 參數; 你不能只給出default的關鍵字參數。 事實上,在 python 3 中, 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,它們是完全不同的文件格式。

有趣的研究

png、svg、ico 無效

感謝 sqlitemanager,我在我的機器上找到了一個 xbm (xubuntu - Linux dist)

工具.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()

仍然是 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)

有兩種方式,

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

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

我必須轉換為 XBM 格式並使用以下 root.iconbitmap('@imagename.xbm') 但是我的平台是 Ubuntu,我發現我的 os 主題沒有適合他的圖像......

這在 linux mint 中對我有用:

from tkinter import *
from PIL import Image, ImageTk
main_fn=Tk()
log= Image.open("path_to_image.ico")
logo = ImageTk.PhotoImage(log)
main_fn.tk.call('wm', 'iconphoto', main_fn._w, logo)
main_fn.mainloop()

我們可以在 linux 上使用 iconphoto。 彩色圖標也很好用。 您可以使用 .png 文件。 .ico 文件可以使用“轉換”實用程序進行轉換。

convert icon.ico icon.png

首先創建一個 PhotoImage 小部件:

icon = tkinter.PhotoImage(file='icon.png')

然后使用 iconphoto 更改圖標:

root = Tk()
root.iconphoto(False, icon)

參考: 請看這個鏈接

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

代替 gui.iconbitmap(default='/home/me/PycharmProjects/program/icon.ico') 我使用了 gui.iconbitmap() 這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM