我在pygame中创建一个伪透明窗口,目的是显示各种信息,例如" HUD"
该脚本使用PIL抓取桌面图像并将其用作窗口的背景。
简单版本:
undefined
这会在屏幕顶部创建一个Pygame窗口。
我的问题是Pygame窗口阻止任何鼠标与其下面的任何东西进行交互。
是否有办法允许忽略鼠标事件并通过'窗口,例如点击Pygame窗口下面的桌面图标。
答案 0 :(得分:2)
你需要做一些额外的黑客攻击,这是PyGame给你的。应该可以将PyGame画布渲染到Python中的另一个窗口框架中,并尝试使用该库的高级功能来实现这一点。
一个例子是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
是回调)。
我希望这能为你提供一个起点。我怀疑有什么现成的,你会发现开箱即用,但这些应该给你一些关于寻找什么的指示。