我正在尝试使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()
我确实使标签透明,但是我可以在文本后面看到一些不必要的白色。
我在做什么错了?
答案 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