【问题标题】:Python: Python WX GUI app from stealing focus from consolePython:Python WX GUI 应用程序从控制台窃取焦点
【发布时间】:2015-01-14 17:28:12
【问题描述】:

我正在运行一个 Python 控制台应用程序(Linux 控制台,用 Python 编写的应用程序),作为运行的一部分,Python GUI (wx) 子进程在许多不同的地方启动。有什么方法可以让 wx GUI 在不从控制台窃取焦点的情况下启动,以便用户可以不间断地继续使用控制台应用程序?有什么方法可以防止这种情况发生,无论是从 Python GUI 应用程序端、从启动 GUI 端的控制台应用程序还是从 Linux 端?

谢谢

【问题讨论】:

    标签: python linux console focus wxwidgets


    【解决方案1】:

    我发现了一个至少可以在 Windows 上运行的 hack,你可以在 Linux 上尝试一下。在显示新 Frame 之前,请将其禁用。

    frame.Disable()
    frame.Show()
    frame.Enable()
    

    【讨论】:

    • 谢谢你试试看
    【解决方案2】:

    在图形界面方面,Linux 是一个特别多样化的系统。除了数十种 GUI 工具包和框架外,至少还有十几种常用的窗口管理器——它们是系统中控制焦点的部分。

    好消息是有一个标准:Extended Window Manager Hints

    虽然我不会假装已阅读所有内容,但我认为您不能无条件地阻止焦点切换到新窗口 - 这有很多充分的理由。

    可以做的只是在完成后将焦点移回控制台 - 如果有可靠的方法来识别它,例如 PID 或窗口名称。您可能想查看wmctrl,这是一个可以与任何实现 EWMH 标准的窗口管理器交互的工具。例如,您可以使用subprocess 与它进行交互。

    【讨论】:

    • 谢谢你也试试看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多