【发布时间】:2014-04-11 17:07:46
【问题描述】:
我有一个 wx.Frame 子类,用户应该能够通过按 Command-W(在 OS X 上)或 Control-W(在 Windows 上)来关闭它。我的代码看起来像
def MyWindow(wx.Frame):
def __init__(self):
# ...
self.Bind(wx.EVT_KEY_DOWN, self.handle_key)
# ...
def handle_key(self, event):
if event.GetKeyCode() == wx.WXK_CONTROL_W:
self.Destroy()
在 Windows 下,handle_key 什么都不做,直到我通过单击将 Frame 聚焦。之后,按下一个键会触发handle_key,但 Ctrl 和 W 会触发函数的单独调用,因此条件永远不会满足。
在 OS X 下,任何按键都不会调用 handle_key,即使在我单击 Frame 以设置焦点之后也是如此。
我怎样才能实现这个按键处理程序,以便
- 其行为跨平台是一致的,除了 Ctrl 与 Cmd 和
- 用户可以在
Frame位于最前面时随时按下组合键,无论哪个窗口实际具有焦点?
【问题讨论】: