[Tkinter-discuss] Tkinter TopLevel transparency
Metz, Bobby W, WWCS
bwmetz at att.com
Fri Jul 7 00:16:30 CEST 2006
All,
Looking for help on making my toplevel window backgrounds opaque or transparent. I've seen sparse mention of setting the alpha property of the toplevel, but the only other mention I've seen in any documentation has to do with canvas widgets. I'm running python 2.4 and the toplevel returns an error when I try to set the alpha param.
>>> from Tkinter import *
>>> root = Tk()
>>> root.wm_attributes('-alpha', 0.5)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in ?
root.wm_attributes('alpha', 0.5)
File "c:\python24\lib\lib-tk\Tkinter.py", line 1386, in wm_attributes
return self.tk.call(args)
TclError: wrong # args: should be "wm attributes window ?-disabled ?bool?? ?-toolwindow ?bool?? ?-topmost ?bool??"
I first saw this referenced on effbot.org and was hoping to use it.
http://effbot.org/tkinterbook/wm.htm
In Win32 programming I know this is a two step process but haven't found any equiv documentation for Tkinter and using the Python win32 modules doesn't work as seen here for Notepad.
import win32con
import win32api
import win32gui
import winxpgui
# Notepad window handle
hWND = 1050292
# Prep the window for transparency...creates buffer of some sort in Windows
win32gui.SetWindowLong (hWND, win32con.GWL_EXSTYLE, win32gui.GetWindowLong (hWND, win32con.GWL_EXSTYLE ) | win32con.WS_EX_LAYERED )
# Get the window background color
bgColor = win32api.GetSysColor(win32con.COLOR_WINDOW)
r = bgColor & 0xFF
g = (bgColor & 0x0000FF00) >> 8
b = (bgColor & 0x00FF0000) >> 16
# Re-compute the RGB value to pass to the SetLayeredWindowAttributes function
winxpgui.SetLayeredWindowAttributes(hWND, win32api.RGB(r, g, b), 50, win32con.LWA_COLORKEY|win32con.LWA_ALPHA)
Any pointers would be greatly appreciated!
Thanks,
Bobby
More information about the Tkinter-discuss
mailing list