【问题标题】:Tkinter create canvas that overlays screen with transparent backgroundTkinter 创建覆盖具有透明背景的屏幕的画布
【发布时间】:2024-04-25 11:50:02
【问题描述】:

我正在创建一个画布,它使用一个小部件覆盖屏幕上的所有其他内容,该小部件没有使用topmost 属性提升的窗口。

不过,我想要透明背景。

这是我得到的:

import Tkinter

vsize = vw, vh = 600, 350

w = Tkinter.Canvas(width=vw, height=vh, highlightthickness=0)
w.master.overrideredirect(True)
w.master.geometry("+0+0")
w.master.lift()
w.master.wm_attributes("-topmost", True)
w.master.wm_attributes("-disabled", True)
w.create_rectangle(0, 0, vw, vh, fill="black")
w.pack()
w.mainloop()

我尝试将以下属性添加到画布并将stipple="gray25" 添加到矩形:

w.master.wm_attributes("-transparentcolor", "gray")

由于某种原因,这并没有使灰色透明,即使这确实有效,使用stipple 也会看起来很糟糕。

有人对如何实现这一点有任何想法吗?

编辑:

我尝试将背景配置为黑色,并赋予它一些透明度,但我只希望背景为黑色,这样我就可以在画布内放置不透明的项目。

w.configure(background="black")
w.master.wm_attributes("-alpha", 0.5)

【问题讨论】:

标签: python python-2.7 tkinter tkinter-canvas


【解决方案1】:

我相信目前没有办法在 Tkinter 中实现这一点。

如果您正在寻找一种在屏幕上叠加内容的方法,为什么不使用放置在屏幕上的单个窗口呢?否则,我建议查看 Tkinter 之外的其他解决方案。

【讨论】:

    最近更新 更多