从Window Title Python tkinter中删除TK

时间:2015-10-07 07:13:47

标签: python tkinter window tk

我重复使用了我在这里找到的代码来设置TK图标的透明度,但它将TK留在调用窗口中。我创建了第二个窗口,我可以编辑该标题。但为什么我不能编辑我从现有帖子中找到的代码。我到处看,但是我制作的新窗口,标题可以编辑,为什么不用Tk的其他窗口呢?

from tkinter import *
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)

root = Tk()

root.title("rename")    

tk = tkinter.Tk()
tk.iconbitmap(default=ICON_PATH)
label = tkinter.Label(tk, text="Window with transparent icon.")
label.pack()



root.mainloop()

1 个答案:

答案 0 :(得分:2)

首先,您不应在同一程序中创建多个Tk()应用程序。

出现此问题的原因是您使用Tk()创建新窗口(应用程序),但您只重命名标题为root的应用程序。这不会重命名tk应用程序的标题。你创造的。

如果你想要的是为标题重命名标题 - 带有透明图标的窗口。。您应该使用tk.title()(而不是root.title())。示例 -

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.title("rename")
tk.iconbitmap(default=ICON_PATH)
label = tkinter.Label(tk, text="Window with transparent icon.")
label.pack()
tk.mainloop()

并且您不需要多个tkinter导入,它不会执行任何操作。导入tkinter(或任何模块)一旦将其缓存到sys.modules中,并且每次尝试再次导入它时,都会从sys.modules获取该缓存模块。

如果要在应用程序中创建更多窗口,则应使用Toplevel widget。示例 -

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.title("rename")

tknewwindow = tkinter.Toplevel(tk)
tknewwindow.title("rename1")
tknewwindow.iconbitmap(default=ICON_PATH)

label = tkinter.Label(tknewwindow, text="Window with transparent icon.")
label.pack()

tk.mainloop()