Tkinter create canvas 用透明背景覆盖屏幕
Tkinter create canvas that overlays screen with transparent background
我正在创建一个 canvas,它使用没有 window 的小部件覆盖屏幕上的所有其他内容,该小部件通过 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.[=17= 中放置不透明的项目]
w.configure(background="black")
w.master.wm_attributes("-alpha", 0.5)
我认为目前没有办法在 Tkinter 中实现这一点。
如果您正在寻找一种在屏幕上叠加内容的方法,为什么不使用单独的 windows 放置在屏幕上呢?否则,我建议查看 Tkinter 之外的其他解决方案。
我正在创建一个 canvas,它使用没有 window 的小部件覆盖屏幕上的所有其他内容,该小部件通过 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.[=17= 中放置不透明的项目]
w.configure(background="black")
w.master.wm_attributes("-alpha", 0.5)
我认为目前没有办法在 Tkinter 中实现这一点。
如果您正在寻找一种在屏幕上叠加内容的方法,为什么不使用单独的 windows 放置在屏幕上呢?否则,我建议查看 Tkinter 之外的其他解决方案。