我的python应用程序启动一个创建pyglet窗口的子进程。当pyglet窗口打开时,它位于所有其他窗口的前面,并且需要键盘焦点。 我希望我的pyglet窗口在后台打开,而不是焦点。这可能吗?
我正在使用的代码的简化版本:
import pyglet
pyglet.window.Window()
pyglet.app.run()
我正在使用Windows 7,以防万一。
答案 0 :(得分:1)
我认为这可能比你的应用程序更像是一个Windows /窗口管理器问题 - 像http://pcsupport.about.com/od/windowsxp/ht/stealingfocus02.htm这样的东西有帮助吗?
答案 1 :(得分:1)
反向焦点是特定于操作系统的:
pyglet 不提供特定于操作系统的窗口控件。因此,很可能您将不得不使用特殊技巧来快速解决这些问题,或尝试使用Windows API和/或COM等扩展程序来解决pywin32,以便通过任务栏应用程序堆栈列出来反向窃取焦点。您也可以尝试创建自己的窗口(容器 - 您可以操作) - 以便将其上下文委托给pyglet。
延迟窃取焦点
另一方面,如果根据您的程序逻辑,您只想延迟实际显示您的应用程序,您可以使用可见性:
import pyglet
w = pyglet.window.Window()
w.set_visible(False)
pyglet.app.run()
因此,如果您不想使用窗口上下文的委派,您可以执行以下操作:
以上假设使用Windows API。我认为MSDN有关于焦点改变的例子。如果你知道你当前窗口的PID(主应用程序),这应该简化第2步。