David Callanan
David Callanan

Reputation: 5810

Tkinter create canvas that overlays screen with transparent background

I am creating a canvas that overlays everything else on the screen using a widget without a window that is lifted with the topmost attribute.

However, I would like a transparent background.

Here is what I've got:

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()

I tried adding the following attribute to the canvas and adding stipple="gray25" to the rectangle:

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

This for some reason didn't make the gray transparent, and even if this did work it would look awful using stipple.

Does anyone have any ideas on how to achieve this?

EDIT:

I tried configuring the background as black, and giving it some transparency, but I would only like the background to be black so I can have non-transparent items inside of the canvas.

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

Upvotes: 3

Views: 3592

Answers (1)

SneakyTurtle
SneakyTurtle

Reputation: 1857

There is currently no way to achieve this in Tkinter I believe.

If you are looking for a way to overlay things on your screen, why not use individual windows placed on the screen? Else, I would suggest looking at other solutions outside of Tkinter.

Upvotes: 3

Related Questions