我正在运行一个Python控制台应用程序(Linux控制台,用Python编写的应用程序),作为运行的一部分,Python GUI(wx)子进程在许多不同的地方启动。有没有办法让wx GUI在没有从控制台窃取焦点的情况下启动,以便用户可以不间断地继续使用控制台应用程序?有没有办法阻止这种情况发生,无论是从Python GUI应用程序端,从启动GUI端的控制台应用程序,还是从Linux端?
由于
答案 0 :(得分:0)
Linux在图形界面方面是一个特别多样化的系统。除了几十个GUI工具包和框架之外,还有至少十几个常用的窗口管理器 - 它们是控制焦点的系统的一部分。
好消息是有一个标准:Extended Window Manager Hints。
虽然我不打算阅读所有内容,但我认为你无法无条件地阻止将焦点转移到新窗口 - 而且还有很多很好的理由。
所做的只是在您完成后将焦点移回控制台 - 如果有可靠的方法来识别它,例如PID或窗口名称。您可能需要查看wmctrl
,这是一个可以与任何实现EWMH标准的窗口管理器交互的工具。例如,您可以使用subprocess
与其进行交互。
答案 1 :(得分:0)
我发现了一个至少在Windows中运行的hack,你可以在Linux上试用它。在显示新帧之前,请将其禁用。
frame.Disable()
frame.Show()
frame.Enable()