如何使 tkinter 标签背景透明?

Posted

技术标签:

【中文标题】如何使 tkinter 标签背景透明?【英文标题】:How to make a tkinter Label background transparent? 【发布时间】:2012-05-14 17:15:37 【问题描述】:

我有一个带有标签的窗口作为我的框架。我这样做是因为我想要背景中的图像。但现在我在使用其他标签时遇到了麻烦。我用来实际标记事物的其他标签没有透明背景。有没有办法让这些标签的背景透明?

import Tkinter as tk

root = tk.Tk()
root.title('background image')

image1 = Tk.PhotoImage(file='image_name.gif')

# get the image size
w = image1.width()
h = image1.height()

# make the root window the size of the image
root.geometry("%dx%d" % (w, h))

# root has no image argument, so use a label as a panel
panel1 = tk.Label(root, image=image1)
panel1.pack(side='top', fill='both', expand='yes')

# put a button/label on the image panel to test it
label1 = tk.Label(panel1, text='here i am')
label1.pack(side=Top)

button2 = tk.Button(panel1, text='button2')
button2.pack(side='top')

# start the event loop
root.mainloop()

【问题讨论】:

【参考方案1】:

我认为它可以帮助,所有黑色将是透明的

root.wm_attributes('-transparentcolor','black')

【讨论】:

使用root.wm_attributes('-transparentcolor', root['bg']) 使默认颜色透明。 如果它只使彩色小部件透明,这将是一个很好的解决方案,但它似乎使彩色小部件和所有下部小部件透明。如果您可以使提升的小部件透明并看到低于它的小部件,那就太好了。知道如何实现吗? 好吧,这就像使特定颜色透明的魅力,但有两个主要问题:a) 就像 Gary02127 所说的那样,它使所有小部件都透明,但看起来不像(至少在 Windows 10 上)它也使具有指定颜色的所有区域也可渗透。 这不起作用。我试过了,它不接受-transparentcolor作为第一个参数。【参考方案2】:

Tk 中不支持透明背景。

【讨论】:

我也这么认为。我也想做。 确实如此:(【参考方案3】:

如果您正在处理图像并在其上添加文本,最方便的方法是 - 我认为 - 使用 Canvas 小部件。

tkinter Canvas 小部件具有 .create_image(x, y, image=image, options).create_text(x, y, text="Some text", options) 等方法。

【讨论】:

【参考方案4】:

使用这个:

from tkinter import *

main=Tk()
photo=PhotoImage(file='test.png')
Label(main,image=photo,bg='grey').pack()
#your other label or button or ...
main.wm_attributes("-transparentcolor", 'grey')
main.mainloop()

这项工作如果使用bg='grey',你可以在第 7 行更改它

祝你好运:)

【讨论】:

_tkinter.TclError: bad attribute "-transparentcolor": must be -alpha, -fullscreen, -modified, -notify, -titlepath, -topmost, or -transparent not working 这很有趣,但它在整个应用程序中切了一个洞,桌面在窗口后面可见。

以上是关于如何使 tkinter 标签背景透明?的主要内容,如果未能解决你的问题,请参考以下文章

Tkinter:模糊的透明背景帧

背景在具有 counter-tkinter 的单独窗口中透明

Tkinter Python透明背景与(不透明)可见形状?

tkinter如何将一个部件透明??

如何使 QTabWidget 看起来透明?

使用透明背景、ttk 框架背景颜色配置 tkinter/ttk 小部件?