python - Tkinter 创建用透明背景覆盖屏幕的 Canvas

标签 python python-2.7 tkinter tkinter-canvas

我正在创建一个 Canvas ,它使用一个没有窗口的小部件覆盖屏幕上的所有其他内容,该窗口使用 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()

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

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

出于某种原因,这并没有使灰色变得透明,即使这样做了,使用 stipple 看起来也很糟糕。

有没有人对如何实现这一目标有任何想法?

编辑:

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

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

最佳答案

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

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

关于python - Tkinter 创建用透明背景覆盖屏幕的 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43666230/

相关文章:

python - sqlite3 3.5.7 与 3.6.21 括号问题

python - 正则表达式从字符串中获取子字符串

python - 为什么我不能使用 python smtplib 向自己发送邮件?

python - 更改 tkinter 文本框小部件中每隔一行文本的背景颜色

android - Tkinter 到 android 的翻译

python - 在 Tkinter 上显示标签一段固定的时间

python - 在 Flask 中使用主机名而不是 IP 地址

python - 是否有用于上传整个目录(包括子目录)的 python ftp 库?

python-2.7 - 使用内联菜单发送图像或文档

python - key 错误 : 0L when running packaged code