使标签背景颜色半透明

时间:2021-06-01 16:37:57

标签: python tkinter

我对 python 和 tkinter 非常陌生,并且一直在创建一个应用程序来显示今天的信息,例如天气和时间。我有一个由画布创建的背景图像,我在画布上的标签上有文字,但我不知道如何通过标签看到画布。

我附上了我现在拥有的和我想看到的(用油漆制作的),以及我现在拥有的代码。

我一直看到正在使用 -alpha 小部件和 -transparentcolor 小部件,但这会直接影响到我的 tkinter 窗口后面的应用程序。我还没有找到一种方法来使这两者都起作用,但我可能会遗漏一些东西。

有什么想法吗?

代码:

from tkinter import *
from time import strftime

HEIGHT = 1080
WIDTH = 1920

def time():
    clock = (strftime("%B"+" "+"%d"+" "+"%X"))
    label.config(text=clock)
    label.after(1000, time)

root = Tk()
root.title('App')
bg = PhotoImage(file="wallpaper.png")

canvas = Label(root, height=HEIGHT, width=WIDTH, image = bg)
canvas.pack()

label = Label(canvas, anchor='center', bg='black', fg='white',font=('Courier 45 bold'))
label.place(relx=0.05, rely=0.05, relwidth=0.4,relheight=0.2)
time()

root.mainloop()

What it currently looks like

What I would like it to look like

1 个答案:

答案 0 :(得分:0)

-alpha 方法是将整个窗口设置为透明。从 0% - 100%。使用 -transparent,您可以使部分窗口透明。也许这个例子对你有一点帮助:

from tkinter import *

root = Tk()
root.geometry("600x550")
root.attributes("-transparent", "red")                  # set your color, which should be transperent to the window attributes

frame1 = Frame(root, bg="black")
frame1.pack(fill="both", expand="yes")

frame2 = Frame(frame1, bg="red")                        # in the root attributes the color is set to red, if
frame2.pack(ipady=150, ipadx=150, pady=100)             # if you make another widget in red, this will be whole over
                                                        # over your window transparent
mainloop()