【问题标题】:wxPython Whole Window Focus EventwxPython 整个窗口焦点事件
【发布时间】:2010-12-22 00:01:58
【问题描述】:

使用 wxPython,当整个窗口进入/离开焦点时如何触发事件?

详细说明,我正在构建一个串行终端 GUI,并希望在用户没有选择我的应用程序时关闭连接,并在用户将我的应用程序带回前台时重新打开连接。我的应用程序只是一个从 wx.Frame 派生的窗口。

【问题讨论】:

    标签: python wxpython wxwidgets


    【解决方案1】:

    这种情况的正确答案是使用绑定到框架的 EVT_ACTIVATE 处理程序。每当框架被激活(相对于当前打开的其他窗口进入前台)或停用时,都会有一个事件。您可以使用事件对象的 GetActive 方法来判断刚刚发生了什么。

    【讨论】:

      【解决方案2】:

      作为 WxPerl 程序员,我知道有

      EVT_SET_FOCUS(

      EVT_KILL_FOCUS(

      如果您通过侦听帧作为第一个参数来初始化此事件,它应该像在 Perl 中一样工作,因为 API 几乎相同

      【讨论】:

        【解决方案3】:

        有趣的文章http://www.blog.pythonlibrary.org/2009/08/27/wxpython-learning-to-focus/

        要点:wx.EVT_KILL_FOCUS 工作正常,但 wx.EVT_SET_FOCUS 对于任何包含小部件的面板都有点奇怪(孩子的 set-focus 会阻止面板的 set-focus 事件按预期触发?)

        【讨论】:

        • 好的,谢谢!不幸的是,这似乎不适用于 OSX,尽管它在 Ubuntu 中运行良好。
        • 是的...我没有要测试的 Mac。在 wxPython 邮件列表上询问这个问题,那里的一位 Mac 人员会告诉你这是什么。
        【解决方案4】:

        除了这些家伙所说的之外,您可能还想尝试 EVT_ENTER_WINDOW 和 EVT_LEAVE_WINDOW。我认为当您将鼠标移入和移出框架小部件时会触发这些事件,尽管我不认为框架必须处于焦点才能触发这些事件。

        @Hugh - 感谢您的阅读!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-15
          • 2021-08-22
          • 1970-01-01
          • 2011-04-03
          • 1970-01-01
          • 2012-07-21
          • 1970-01-01
          • 2010-11-08
          相关资源
          最近更新 更多