wxPython整窗口焦点事件

1 投票
4 回答
2583 浏览
提问于 2025-04-16 08:52

在使用wxPython的时候,怎么才能在整个窗口获得或失去焦点时触发一个事件呢?

具体来说,我正在制作一个串口终端的图形界面,想要在用户没有选中我的应用程序时关闭连接,而当用户把我的应用程序重新放到最前面时再重新打开连接。我的应用程序就是一个从wx.Frame派生出来的单窗口。

4 个回答

2

除了这些朋友提到的内容,你还可以试试 EVT_ENTER_WINDOW 和 EVT_LEAVE_WINDOW。这两个事件是在你把鼠标移进和移出窗口的时候触发的。虽然我觉得窗口不一定要被选中,这些事件也会被触发。

@ Hugh - 感谢你的关注!

2

作为一个使用WxPerl的程序员,我知道有一些事件,比如:

EVT_SET_FOCUS(

EVT_KILL_FOCUS(

如果你通过监听框架来初始化这个事件,作为第一个参数,它应该和在Perl中一样有效,因为这两个API几乎是一样的。

5

这个问题的正确解决办法是使用一个叫做 EVT_ACTIVATE 的处理器,绑定到窗口框架上。每当这个框架被激活(也就是在其他打开的窗口中被显示出来)或者被取消激活时,就会发生一个事件。你可以用这个事件对象的 GetActive 方法来判断刚刚发生了什么情况。

撰写回答