使用wxPython,当整个窗口进入/离开焦点时,如何触发事件?
详细说明,我正在构建一个串行终端GUI,并希望每当用户没有选择我的应用程序时关闭连接,并在用户将我的应用程序带回前台时重新打开连接。我的应用程序只是从wx.Frame派生的单个窗口。
答案 0 :(得分:5)
这种情况的正确答案是使用绑定到帧的EVT_ACTIVATE处理程序。每当激活帧(相对于当前打开的其他窗口进入前景)或停用时,都会有事件。您可以使用事件对象的GetActive方法来判断刚刚发生的事情。
答案 1 :(得分:2)
作为WxPerl程序员,我知道有
EVT_SET_FOCUS(
EVT_KILL_FOCUS(
如果你通过将框架作为第一个参数来初始化这个事件,那么它应该像Perl一样工作,因为API几乎是相同的
答案 2 :(得分:2)
有趣的文章http://www.blog.pythonlibrary.org/2009/08/27/wxpython-learning-to-focus/
它的主旨:wx.EVT_KILL_FOCUS工作正常,但wx.EVT_SET_FOCUS对于包含小部件的任何面板都有点奇怪(孩子的set-focus会阻止面板的set-focus事件按预期触发?)
答案 3 :(得分:2)
除了这些研究员所说的内容之外,您可能还想尝试EVT_ENTER_WINDOW和EVT_LEAVE_WINDOW。我认为当你将鼠标移入和移出框架小部件时会触发这些内容,尽管我不认为框架必须是焦点才能触发这些事件。
@ Hugh - 感谢读者!