And*_*rew 5 python windows graphics subprocess pyglet
我的python应用程序启动一个创建pyglet窗口的子进程.当pyglet窗口打开时,它位于所有其他窗口的前面,并且需要键盘焦点.我希望我的pyglet窗口在后台打开,而不是焦点.这可能吗?
我正在使用的代码的简化版本:
import pyglet
pyglet.window.Window()
pyglet.app.run()
Run Code Online (Sandbox Code Playgroud)
我正在使用Windows 7,以防万一.
反转焦点是特定于操作系统的:
pyglet不提供操作系统特定的窗口控制。因此,您很可能必须使用临时技巧来实现快速而肮脏的解决方案,或者尝试使用 pywin32 等扩展来使用 Windows API 和/或 COM 来列出任务栏应用程序堆栈,以逆转焦点窃取。您还可以尝试首先创建自己的窗口(容器 - 您可以操作) - 以便将其上下文委托给 pyglet。
延迟窃取焦点
另一方面,如果根据您的程序逻辑,您只想延迟应用程序的实际显示,您可以使用可见性:
import pyglet
w = pyglet.window.Window()
w.set_visible(False)
pyglet.app.run()
Run Code Online (Sandbox Code Playgroud)
因此,如果您不想使用窗口上下文委托,您可以执行以下操作:
以上假设使用 Windows API。我认为 MSDN 有关于焦点更改的示例。如果您知道当前窗口(主应用程序)的 PID,这应该会简化第 2 步。