24

私はこのようにアプリケーションアイコン(python3 / tkinter)を設定しようとしています:

Interface()
root.title("Quicklist Editor")
root.iconbitmap('@/home/jacob/.icons/qle_icon.ico')
root.resizable(0, 0)
root.mainloop()

何をしても、次のようなエラーメッセージ(アイドル)が表示され続けます。

return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: error reading bitmap file "/home/jacob/.icons/qle_icon.ico"

私は何が間違っているのですか?

4

6 に答える 6

70

問題はコードではなく、アイコンです。Gimp(一部のKDEアイコンエディタ)以外のプログラムでを作成してみましたxbmが、見た目はひどく醜いですが、アイコンが表示されます。Pythonプログラムに「わかりやすい」アイコンを表示する作成者を見つける必要があると思います。


編集

方法はiconbitmap白黒だけであることが判明したので、結局それは役に立たなかった。

長い間検索した結果、Python 3(Linux上)のアプリケーションのアイコンの色を設定するための解決策を見つけました。私はここでそれを見つけました:

root = Tk()
img = PhotoImage(file='your-icon')
root.tk.call('wm', 'iconphoto', root._w, img)
于 2012-06-24T18:54:11.893 に答える
17

これは古い質問であり、Webには多くのことが書かれていますが、すべてが正しくないか不完全であるため、実際に機能するコードをここに記録しておくとよいと思いました。

まず、アイコンを作成し、Windows「ico」とUnix「xbm」の2つの形式で保存する必要があります。64x64が適切なサイズです。XBMは1ビット形式です。ピクセルはオンまたはオフであるため、色やグレーはありません。tkinterのLinux実装は、すべてのLinuxデスクトップが実際のアイコンをサポートしている場合でもXBMのみを受け入れるため、運が悪いだけです。また、XBMの仕様では、「オン」ビットが黒と白のどちらを表すかがあいまいであるため、一部のデスクトップではXBMを反転する必要がある場合があります。Gimpはこれらを作成するのに適しています。

次に、アイコンをタイトルバーに配置するには、次のコード(Python 3)を使用します。

import os
from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("My Application")
if "nt" == os.name:
    root.wm_iconbitmap(bitmap = "myicon.ico")
else:
    root.wm_iconbitmap(bitmap = "@myicon.xbm")

root.mainloop()
于 2013-04-23T05:23:46.903 に答える
7

これを試しましたが、Windows7を使用して動作させることができませんでした。

修正が見つかりました。

Jacobの答えを使用しますが、.gif私のOS(Windows 7)を使用している場合は、ファイルが表示される必要があります。

MSペイントを使用して64x64gifを作成し、保存し、ファイルパスとビンゴを使用して機能します。

于 2013-06-22T14:13:53.907 に答える
7

これにより、PNGファイルをアイコンとして使用できるようになり、色がレンダリングされます。Xubuntu 14.04、32ビットのPython 3.4でテストしました(これrootTkオブジェクトです)。

import sys, os
program_directory=sys.path[0]
root.iconphoto(True, PhotoImage(file=os.path.join(program_directory, "test.png")))

test.png(すべてのコンテキストで同じ場所で検索する場合は、プログラムディレクトリを見つけることが重要です。これos.path.joinは、プログラムディレクトリに追加するクロスプラットフォームの方法test.pngです。)

TrueをFalseに変更すると、メインウィンドウではないウィンドウに同じアイコンが使用されなくなります。

これがWindowsとMacで機能するかどうか教えてください。

于 2014-08-09T21:42:28.197 に答える
2

これがクロスプラットフォーム機能に役立つことを願っています

LOGO_PATH="pic/logo.ico"
LOGO_LINUX_PATH="@pic/logo_1.xbm"  #do not forget "@" symbol and .xbm format for Ubuntu 
root = Tk()
    if detect_screen_size().detect_os()=="Linux":
        root.iconbitmap(LOGO_LINUX_PATH)
    else:
        root.iconbitmap(LOGO_PATH)
于 2020-01-14T14:47:54.667 に答える
0

r文字列を使用してディレクトリを生のテキストに変換するだけでうまくいきました。

元:

app.iconbitmap(r'ここにパスを入力してください')

于 2021-05-19T13:57:33.500 に答える