从 Window 标题中删除传统知识 Python tkinter
Removing TK from Window Title Python tkinter
我 re-used 我在这里找到了一个代码,用于设置 TK 图标的透明度,但它在调用的 window 中留下了 TK。我创建了第二个 window,我可以编辑该标题。但为什么我不能编辑从现有 post 中找到的代码。我到处都看了,但我制作的新window,标题可以编辑,为什么另一个window里面有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()
首先,你不应该在同一个程序中创建多个Tk()
应用程序。
出现此问题是因为您使用 Tk()
创建了新的 window(应用程序),但您仅重命名了标题 root
应用程序。这不会重命名 tk
应用程序的标题。你创造的。
如果您只想将标题重命名为带有标签的 window - Window with transparent icon. 。您应该使用 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
获得缓存的模块。
如果您想在您的应用程序中创建更多 windows,您应该为此使用 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()
我 re-used 我在这里找到了一个代码,用于设置 TK 图标的透明度,但它在调用的 window 中留下了 TK。我创建了第二个 window,我可以编辑该标题。但为什么我不能编辑从现有 post 中找到的代码。我到处都看了,但我制作的新window,标题可以编辑,为什么另一个window里面有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()
首先,你不应该在同一个程序中创建多个Tk()
应用程序。
出现此问题是因为您使用 Tk()
创建了新的 window(应用程序),但您仅重命名了标题 root
应用程序。这不会重命名 tk
应用程序的标题。你创造的。
如果您只想将标题重命名为带有标签的 window - Window with transparent icon. 。您应该使用 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
获得缓存的模块。
如果您想在您的应用程序中创建更多 windows,您应该为此使用 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()