Tkinter ウィンドウ上の TK アイコンの削除
-
23-08-2019 - |
質問
アイコンを表示させない方法を知っている人はいますか?アイコンをまったく表示しない方法を探しています。
解決
Windowsでは
のステップ1:の
アイコンエディタ、または RW-デザイナーのようなサイトのいずれかを使用して透明アイコンを作成します。 >。 transparent.ico
として保存します。
のステップ2:の
from tkinter import *
tk = Tk()
tk.iconbitmap(default='transparent.ico')
lab = Label(tk, text='Window with transparent icon.')
lab.pack()
tk.mainloop()
UNIXの場合
似たような、しかしxbm
アイコンを使用。
他のヒント
(醜いというCONで)受け入れ答えと同様に
import tkinter
import tempfile
ICON = (b'\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x08\x00h\x05\x00\x00'
b'\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00'
b'\x08\x00\x00\x00\x00\x00@\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x01\x00\x00\x00\x01') + b'\x00'*1282 + b'\xff'*64
_, ICON_PATH = tempfile.mkstemp()
with open(ICON_PATH, 'wb') as icon_file:
icon_file.write(ICON)
tk = tkinter.Tk()
tk.iconbitmap(default=ICON_PATH)
label = tkinter.Label(tk, text="Window with transparent icon.")
label.pack()
tk.mainloop()
これは、だけではなく、その場でファイルを作成しますので、あなたの周りの余分なファイルを実行する必要はありません。同じ方法を使用して、あなたはまた、Unix用の「.xbm」アイコンを行うことができます。
編集:
:ICON
は @Magnus Hoff氏のにさらに感謝を短縮することができます
import base64, zlib
ICON = zlib.decompress(base64.b64decode('eJxjYGAEQgEBBiDJwZDBy'
'sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc='))
私の知る限りでは、最も近いあなたは、ウィンドウのタイトルバーと同じ色だものを使用している「ブランク」アイコンになります。しかし、その後、再びユーザーの多くは、異なるカラーテーマを使用するので、それは非常によくオーバー行くことはありません。
- ジョン
私は、このソリューションを使用し、以前の回答に基づいて、
from PIL import ImageTk
import zlib,base64
import Tkinter
icon=zlib.decompress(base64.b64decode('eJxjYGAEQgEBBiDJwZDBy'
'sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc='))
root=Tkinter.Tk()
image=ImageTk.PhotoImage(data=icon)
root.tk.call('wm', 'iconphoto', root._w, image)
root.mainloop()
アップデート:
わずかに変更されたコード (try
の代わりに条項 if TkVersion
) は、以下に透明 (いいえ) アイコンを生成します。
Linux (Mint 18.1)、Python 2.7
Linux (Mint 18.1)、Python 3.5.1
Windows 10、Python 2.7.13
以下の場合には黒いアイコンが表示されます (機能しません)。
Windows 8.1、Python 3.6
かなり古い質問ですが、解決策は私にとっては役に立ちませんでした。私は部分的に簡単な解決策を見つけましたが、私自身のフォローアップの質問もありました。
部分的な解決策 (Tk 8.5、下記を参照) - PhotoImage の使用 blank()
方法:
from Tkinter import *
root=Tk()
icon=PhotoImage(height=16, width=16)
icon.blank()
root.tk.call('wm', 'iconphoto', self.master._w, icon)
root.mainloop()
Python 2.7、Windows 10 では、これは正常に機能し、新しいアプリに必要な「アイコンなし」が生成されます。
ただし、Python 3.6、Win 8.1 では、これにより GUI が動作しなくなります。これは新しい Tk 8.6 に関連していると思いますが、新しい 8.6 の表記法では wm_iconphoto()
この場合、妨害を受けずに通過します。
try:
from tkinter import *
except:
from Tkinter import *
root=Tk()
#Identical for Py2.7/Tk8.5 and Py3.5/Tk8.6
icon=PhotoImage(height=16, width=16)
icon.blank()
#Picking a notaion based on Tk version to avoid jamming
try:
root.wm_iconphoto('True', icon) #New Tk 8.6 style
else:
#Jams Python 3.5 with Tk 8.6 on Windows
root.tk.call('wm', 'iconphoto', self.master._w, icon)
root.mainloop()
2.7/8.5 の場合は透明なアイコンの代わりに、3.6 では黒いアイコンが生成されます。
「透明度設定」を使用してピクセルを1つずつ透明に設定する方法があるかもしれません -http://wiki.tcl.tk/1449
ただし、Tkinter 経由で実行できるかどうかはわかりません。神は大胆な人を支持しますが、誰か他の人の番になるでしょうか?
質問を更新しました:これが Py3.6/Windows ではなぜ機能しないのでしょうか?
Tkinter.PhotoImage
画像を処理するためのサポート.gif
のを利用してカスタムイメージを追加するための@ ubombのsoluationにオルタナティヴます。
ファイルから:
icon = Tkinter.PhotoImage(file="logo.gif")
のbase64から:
gif_base64_string = """
R0lGODdhEAAQAIcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O
Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh
...
4B8AAP9Ci/4HoLTpfwD+qV4NoHVAADs=
"""
icon = Tkinter.PhotoImage(data=gif_base64_string)
effbot.org詳細はリンクます: