所以我想制作一个由 pygame 提供支持的叠加层。我设法通过下面的代码获得了一个透明窗口。我现在唯一的问题是,当您单击或悬停在图像上时,焦点会切换到 pygame 窗口,从而使某些 fps 游戏无法播放。有没有办法让窗口“忽略”事件?
代码(片段):
def get_pygame_window():
return pygame.display.get_wm_info()["window"]
screen = pygame.display.set_mode(self.size, pygame.NOFRAME) # make the window borderless
# make window always top (only works for fake-fullscreen or windowed)
win32gui.SetWindowPos(get_pygame_window(), win32con.HWND_TOPMOST, 0, 0, 0, 0, win32con.SWP_NOSIZE | win32con.SWP_NOMOVE)
hwnd = get_pygame_window()
win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE, win32gui.GetWindowLong(hwnd,win32con.GWL_EXSTYLE) | win32con.WS_EX_LAYERED)
# Set window transparency color (windows keys this out so it becomes transparent)
win32gui.SetLayeredWindowAttributes(hwnd, win32api.RGB(*get_clear_color()), 0, win32con.LWA_COLORKEY)