首页 > 解决方案 > 当我透明背景颜色时也获得背景颜色

问题描述

我正在尝试使 tkinter 标签小部件的背景透明。但我仍然看到一些使它变脏的背景颜色。

代码

import tkinter as tk

root = tk.Tk()

root.overrideredirect(True)
root.geometry("120x30+1000+550")

label = tk.Label(root, text='Python', bg='white', fg='red', font=('Courier', 25))
label.pack()

root.wm_attributes("-topmost", True)
root.wm_attributes("-disabled", True)
root.wm_attributes("-transparentcolor", "white")

root.mainloop()

我确实透明了标签,但我可以在文本后面看到一些不必要的白色。

文字后面的白色

我在做什么错?

标签: pythonwindowstkinter

解决方案


正如@furas 所说:

tkinter 首先创建白色背景并使用抗锯齿绘制红色文本,这会创建混合颜色的像素 - 红色和白色 - 因此它们不是纯白色。后来 system/wm (wm = windows manager) 只删除纯白色像素以创建透明背景。对你来说,像素看起来是白色的,但对于计算机来说不是理想的白色,它不会删除它们。如果你使用类似于红色的 bg

所以,我改成bg='white'与红色相似的颜色,bg='#fc0000'这解决了这个问题

import tkinter as tk

root = tk.Tk()

root.overrideredirect(True)
root.geometry("120x30+1000+550")

label = tk.Label(root, text='Python', bg='#fc0000', fg='red', font=('Courier', 25))
label.pack()

root.wm_attributes("-topmost", True)
root.wm_attributes("-disabled", True)
root.wm_attributes("-transparentcolor", '#fc0000')

非常感谢furas


推荐阅读