【发布时间】:2016-09-07 01:44:00
【问题描述】:
我在 pygame 中制作了一个伪透明窗口,目的是显示各种信息,例如“HUD”
该脚本使用 PIL 抓取桌面图像并将其用作窗口的背景。
一个简单的版本:
import pygame as py
from ctypes import windll
import ImageGrab, Image
SetWindowPos = windll.user32.SetWindowPos
py.init()
def get_image():
im = ImageGrab.grab((0,0,window_x,window_y))
mode = im.mode
size = im.size
data = im.tobytes()
im = py.image.fromstring(data,size,mode)
return im
window_x = 1920
window_y = 100
background = py.Surface((window_x,window_y))
background.blit(get_image(),(0,0))
window_pos = (0,0)
screen = py.display.set_mode((window_x,window_y),py.HWSURFACE|py.NOFRAME)
SetWindowPos(py.display.get_wm_info()['window'],-1,0,0,0,0,0x0001)
clock = py.time.Clock()
done = False
while not done:
for event in py.event.get():
if event.type == py.QUIT:
done = True
screen.blit(background,(0,0))
py.display.flip()
clock.tick(30)
py.quit()
这会在屏幕顶部创建一个 Pygame 窗口。
我的问题是 Pygame 窗口阻止了任何鼠标与其下方的任何交互。
有没有办法让鼠标事件被忽略并“通过”窗口,例如单击 Pygame 窗口下方的桌面图标。
【问题讨论】:
-
您的目标操作系统是什么?在 Mac OS X、Windows、Linux 上有不同的方法。如果你能提到我可以尝试链接一段特定的代码。
-
我目前正在使用并优先考虑 Windows,但 Linux 解决方案也会有所帮助。
标签: python python-2.7 window pygame