web-dev-qa-db-ja.com

TkinterウィンドウのTKアイコンを削除する

アイコンが表示されないようにする方法を知っている人はいますか?アイコンがまったくない方法を探しています。

24
Evan Fosmark

Windowsの場合

ステップ1:

アイコンエディタ、または rw-designer のようなサイトを使用して、透明なアイコンを作成します。 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アイコンを使用しています。

42
Stobor

受け入れられた答えに似ています(醜いという短所があります):

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='))
11
ubomb

以前の回答に基づいて、私はこのソリューションを使用しました:

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()
3
Dario Garcia

私の知る限り、「空白」アイコンに最も近いのは、ウィンドウのタイトルバーと同じ色のアイコンを使用することです。しかし、やはり多くのユーザーが異なる色のテーマを使用しているため、うまく行きません。

ただし、py2exeを使用する場合は、 Resource Hacker のようなものを使用してアイコンを交換できます。しかし、pythonプログラムのテキスト状態では、置き換えるのが最善です。JarファイルがJavaアイコンを使用する方法のように、tkinterアプリにはTKがあります。アイコン。結局のところ... Javaのように、アプリは中間プログラムによって翻訳されています。別のプログラムがコードを実行しているため、他のプログラムを変更する必要があります。幸い、python/tkはJVMよりも少し柔軟性があります。アイコンを置き換えることができるようにアイコンを追加しますが、現在、アイコンを完全に削除することはできません。

-ジョン

3
John T

_Tkinter.PhotoImage_画像を処理するための_.gif_の組み込みサポートを利用して、カスタム画像を追加するための@ubombの解決策の代替手段。

ファイルから:

icon = Tkinter.PhotoImage(file="logo.gif")

base64から:

_gif_base64_string = """ R0lGODdhEAAQAIcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh ... 4B8AAP9Ci/4HoLTpfwD+qV4NoHVAADs= """_

icon = Tkinter.PhotoImage(data=gif_base64_string)

詳細については、effbot.orgのリンク:

http://effbot.org/tkinterbook/photoimage.htm

2
shbooms

更新:

わずかに変更されたコード(if TkVersionの代わりにtry句)は、以下に透明な(no)アイコンを生成します。

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に関連していると思いますが、wm_iconphoto()を使用する新しい8.6表記が見つかりました。この場合、ジャムなしで通過します:

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で機能しないのですか?

1
Jay