在Python中捕获wx.Frame外的鼠标事件

Mac*_*chu 4 wxpython proximity mouseevent shaped-window

在使用wxPython的Python中,如何根据鼠标相对于应用程序窗口或框架的接近程度来设置窗口的透明度和大小?

例如.类似于双曲线缩放,还是MAC OS X中的Dock?我试图用透明度和形状窗口的png实现这种效果.

任何执行此操作的库或代码片段都会很棒.谢谢.

Fog*_*ird 7

这是执行此操作的代码.基本上使用Infinity77提到的方法.在Windows上测试过.很好用!

import wx

MIN_ALPHA = 64
MAX_ALPHA = 255

class Frame(wx.Frame):
    def __init__(self):
        super(Frame, self).__init__(None)
        self.alpha = MAX_ALPHA
        self.SetTitle('Mouse Alpha')
        self.on_timer()
    def on_timer(self):
        x, y, w, h = self.GetRect()
        mx, my = wx.GetMousePosition()
        d1 = max(x - mx, mx - (x + w))
        d2 = max(y - my, my - (y + h))
        alpha = MAX_ALPHA - max(d1, d2)
        alpha = max(alpha, MIN_ALPHA)
        alpha = min(alpha, MAX_ALPHA)
        if alpha != self.alpha:
            self.SetTransparent(alpha)
            self.alpha = alpha
        wx.CallLater(20, self.on_timer)

if __name__ == '__main__':
    app = wx.App(None)
    frame = Frame()
    frame.Show()
    app.MainLoop()
Run Code Online (Sandbox Code Playgroud)