Python, Tkinter. Как фон canvas сделать прозрачным?

Нужно сделать фон canvas прозрачным, чтобы элементы под ним были видны (кнопки например), и чтобы на самом canvas можно было рисовать. В поисковике нашёл только такой пример пример. Попробовал по первому способу

hud_canvas = Canvas(root, bg='#000000', width=1200, height=600, cursor= "target")
hud_canvas.configure(bg="")

Вывод:

_tkinter.TclError: unknown color name ""

Попробовал обработать ошибку с помощью try\execpt - безрезультатно, фон остается тот же (черный и не исчезает). Хорошо, попробовал второй способ

hud_canvas = Canvas(root, bg='#000000', width=1200, height=600, cursor= "target")

hwnd = hud_canvas.winfo_id()
colorkey = win32api.RGB(0,0,0) #full black in COLORREF structure
wnd_exstyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
new_exstyle = wnd_exstyle | win32con.WS_EX_LAYERED
win32gui.SetWindowLong(hwnd,win32con.GWL_EXSTYLE,new_exstyle)
win32gui.SetLayeredWindowAttributes(hwnd,colorkey,255,win32con.LWA_COLORKEY)
hud_canvas.create_rectangle(50,50,100,100,fill='blue')
hud_canvas.place(x=50, y=130)

Выводит ошибку:

  File "SBt1.py", line 34, in <module>
      win32gui.SetLayeredWindowAttributes(hwnd,colorkey,255,win32con.LWA_COLORKEY

  pywintypes.error: (87, 'SetLayeredWindowAttributes', 'Параметр задан неверно.')

Искал уже везде где только мог, искал как исправить ошибку, другие способы сделать фон прозрачным, ничего в итоге. Может кто-нибудь знает как это сделать? И почему варианты сверху не работают?


Ответы (0 шт):