删除的Tkinter窗口上的TK图标
-
23-08-2019 - |
题
是否有人知道如何使图标显示不出来?我正在寻找一种方式来都没有图标的。
解决方案
在Windows
<强>第一步:强>
创建使用任一个图标编辑器,或如 RW-设计师一个的部位的透明图标>。将其保存为transparent.ico
。
<强>第二步:强>
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()
这只是创建上飞文件,而不是,所以你不必携带额外的文件身边。用同样的方法,你也可以做一个“.xbm”图标为Unix。
编辑:ICON
可以缩短甚至进一步得益于 @Magnus霍夫:
import base64, zlib
ICON = zlib.decompress(base64.b64decode('eJxjYGAEQgEBBiDJwZDBy'
'sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc='))
据我所知,最近的你会得到一个“空白”图标是用一个是这样的颜色作为窗口的标题栏一样。但话又说回来了很多用户使用不同的颜色主题,所以不会去了很好。
不过,如果你使用py2exe,你可以使用像资源黑客交换的图标。但在Python程序文本状态,你能做的最好是更换。排序的Jar文件如何使用java图标,Tkinter的应用程序将有TK图标。毕竟...像Java,您的应用程序是由中间程序转换。由于另一个程序正在运行的代码,您必须修改其他程序。幸运的是,蟒蛇/ TK比JVM更加灵活一点在图标方面,所以你可以更换图标。但除去它完全是当前没有一种选择。
-John
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(薄荷18.1),Python 2.7版
的Linux(薄荷18.1),Python的3.5.1
视窗10,Python的2.7.13
它产生在黑色图标(不工作):
Windows 8.1中,Python的3.6
一个比较老的问题,但解决方案并没有为我工作。我发现了一个局部的简单的解决方案,用我自己的一个后续问题。
在局部溶液(TK 8.5,见下文) - 使用光象的方法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()
它产生于3.6黑色图标,代替透明一个中的2.7 / 8.5的情况下。
有可能是由一个使用“透明度设置”来设置像素透明一个的方式 - http://wiki.tcl.tk/1449
不过,我不知道这是否是可行的,即使通过Tkinter的。虽然上帝宠爱勇敢,别人的大转弯?
更新问题:为什么不上Py3.6 / Windows的这项工作。
替代@ ubomb的soluation用于通过利用添加自定义图像Tkinter.PhotoImage
内置的用于处理图像.gif
支持。
从文件:
icon = Tkinter.PhotoImage(file="logo.gif")
这BASE64:
gif_base64_string = """
R0lGODdhEAAQAIcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O
Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh
...
4B8AAP9Ci/4HoLTpfwD+qV4NoHVAADs=
"""
icon = Tkinter.PhotoImage(data=gif_base64_string)
effbot.org链接查看更多细节: