+++ /dev/null
-import wx
-
-class Frame(wx.Frame):
- def __init__(self):
- wx.Frame.__init__(self, None, title="Am I transparent?")
- self.amount = 255
- self.delta = -3
-
- p = wx.Panel(self)
- self.st = wx.StaticText(p, -1, str(self.amount), (25,25))
- self.st.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.NORMAL))
-
- self.timer = wx.Timer(self)
- self.timer.Start(25)
- self.Bind(wx.EVT_TIMER, self.AlphaCycle)
-
- self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
-
-
- def OnCloseWindow(self, evt):
- self.timer.Stop()
- del self.timer
- self.Destroy()
-
-
- def AlphaCycle(self, evt):
- self.amount += self.delta
- if self.amount == 0 or self.amount == 255:
- self.delta = -self.delta
- self.st.SetLabel(str(self.amount))
-
- # Note that we no longer need to use ctypes or win32api to
- # make transparent windows, however I'm not removing the
- # MakeTransparent code from this sample as it may be helpful
- # for somebody someday.
- #self.MakeTransparent(self.amount)
-
- # Instead we'll just call the SetTransparent method
- self.SetTransparent(self.amount)
-
-
- def MakeTransparent(self, amount):
- hwnd = self.GetHandle()
- try:
- import ctypes
- _winlib = ctypes.windll.user32
- style = _winlib.GetWindowLongA(hwnd, 0xffffffecL)
- style |= 0x00080000
- _winlib.SetWindowLongA(hwnd, 0xffffffecL, style)
- _winlib.SetLayeredWindowAttributes(hwnd, 0, amount, 2)
-
- except ImportError:
- import win32api, win32con, winxpgui
- _winlib = win32api.LoadLibrary("user32")
- pSetLayeredWindowAttributes = win32api.GetProcAddress(
- _winlib, "SetLayeredWindowAttributes")
- if pSetLayeredWindowAttributes == None:
- return
- exstyle = win32api.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
- if 0 == (exstyle & 0x80000):
- win32api.SetWindowLong(hwnd,
- win32con.GWL_EXSTYLE,
- exstyle | 0x80000)
- winxpgui.SetLayeredWindowAttributes(hwnd, 0, amount, 2)
-
-
-
-app = wx.App(False)
-frm = Frame()
-frm.Show()
-app.MainLoop()