Pygame:允许点击进入窗口

时间:2016-05-11 14:54:17

标签: python python-2.7 window pygame

我在pygame中创建一个伪透明窗口,目的是显示各种信息,例如" HUD"

该脚本使用PIL抓取桌面图像并将其用作窗口的背景。

简单版本:

undefined

这会在屏幕顶部创建一个Pygame窗口。

我的问题是Pygame窗口阻止任何鼠标与其下面的任何东西进行交互。

是否有办法允许忽略鼠标事件并通过'窗口,例如点击Pygame窗口下面的桌面图标。

1 个答案:

答案 0 :(得分:2)

你需要做一些额外的黑客攻击,这是PyGame给你的。应该可以将PyGame画布渲染到Python中的另一个窗口框架中,并尝试使用该库的高级功能来实现这一点。

在Windows中

一个例子是wxWidgets。 As described in this thread,听起来与您想要实现的非常相似,用户设置了一个可以点击并且透明的窗口。

Also see this another Stackoverflow Post提到了如何在C#中处理命中测试。在此发布该帖子的代码:

protected override void WndProc(ref Message m)
{
    if (m.Msg == (int)WM_NCHITTEST)
        m.Result = (IntPtr)HTTRANSPARENT;
    else
        base.WndProc(ref m);
}

可以使用win32 API在Python中进行类似的测试。 This is a piece of Python code that does exactly this.找到程序员为事件设置回调的部分(win32con.WM_NCHITTEST: self.onChi,,其中self.onChi是回调)。

我希望这能为你提供一个起点。我怀疑有什么现成的,你会发现开箱即用,但这些应该给你一些关于寻找什么的指示。