当我透明背景色时也获得背景色

时间:2019-05-12 06:47:53

标签: python windows tkinter

我正在尝试使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()

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

White color behind the text

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

如@furas所说:

  

tkinter首先创建白色背景,然后使用抗锯齿绘制红色文本,从而创建具有混合颜色的像素-红色和白色-因此它们不是纯白色。之后,系统/ wm(wm = Windows管理器)仅删除纯白色像素以创建透明背景。对您而言,像素似乎是白色,但对于计算机而言,并不是理想的白色,并且不能消除它们。如果您使用与红色类似的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