Skip to content Skip to sidebar Skip to footer

How To Create A Translucent Window In Tinter?

I am trying to create a translucent window in Tkinter like the one in windows 11 How to do this? If we cannot do this can we capture a part of a screen and blur it using cv2 and u

Solution 1:

No, this is not directly possible with tkinter. But:

If you use PIL, you can get the location of the window, and then take a screenshot, then blur it and then make it your app background. But this wont work if user tries to move/resize the application. But here is a rough code:

from tkinter import *
from PIL import ImageTk, ImageGrab, ImageFilter # pip install Pillow

root = Tk()
root.overrideredirect(1) # Hide the titlebar etc..

bg = Canvas(root)
bg.pack(fill='both',expand=1)
root.update()

# Get required size and then add pixels to remove title bar and window shadow
left   = root.winfo_rootx()
top    = root.winfo_rooty()
right  = left + root.winfo_width()
bottom = top  + root.winfo_height()

root.withdraw() # Hide the window
img = ImageGrab.grab((left,top,right,bottom)) # Get the bg image
root.deiconify() # Show the window

img = img.filter(ImageFilter.GaussianBlur(radius=5)) # Blur it 
img = ImageTk.PhotoImage(img)
bg.create_image(0,0, image=img, anchor='nw') # Show in canvas

label = Label(root,text='This is a translucent looking app')
bg.create_window(bg.winfo_width()/2,bg.winfo_height()/2,window=label) # Position in the center

root.mainloop()

Output with tkinter:


tkinter is not the best choice if you are trying to go for a modern look, use PyQt and check qtacrylic

Output with PyQt:

Solution 2:

For live blur (native Windows blur) use "BlurWindow":

FluentTkinter

python -m pip install BlurWindow

from tkinter import *
from ctypes import windll

from BlurWindow.blurWindow import blur

root = Tk()
root.config(bg='green')

root.wm_attributes("-transparent", 'green')
root.geometry('500x400')

root.update()

hWnd = windll.user32.GetForegroundWindow()
blur(hWnd)



defcolor(hex):
    hWnd = windll.user32.GetForegroundWindow()
    blur(hWnd,hexColor=hex)
    

e = Entry(width=9)
e.insert(0,'#12121240')

e.pack()
b = Button(text='Apply',command=lambda:[color(e.get())])
b.pack()


root.mainloop()

Post a Comment for "How To Create A Translucent Window In Tinter?"