+ -
当前位置:首页 → 问答吧 → wxPython KEY_DOWN消息竟然没有响应

wxPython KEY_DOWN消息竟然没有响应

时间:2010-11-12

来源:互联网

我想测试键盘消息,找了个简单的程序如下。测试结果让人大跌眼镜
我用的是windows xp,python是2.7

wx.EVT_KEY_DOWN
下列键没有响应 Tab Enter → ↑ ↓ ←

wx.EVT_KEY_UP
所有键都有响应

wx.EVT_CHAR
只有F1 ... F12 PrintScreen ScrollLock PauseBreak 有响应

Python code

#!/usr/bin/python
#_*_encoding:utf-8_*_
# keyevent.py

import wx

class KeyEvent(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)

        panel = wx.Panel(self, -1)
#        panel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)  # 下列没有响应 Tab Enter → ↑ ↓ ←
#        panel.Bind(wx.EVT_KEY_UP, self.OnKeyDown)    # 全部有响应
        panel.Bind(wx.EVT_CHAR, self.OnKeyDown)       # 只有F1 ... F12 PrintScreen ScrollLock PauseBreak有反应
        panel.SetFocus()

        self.Centre()
        self.Show(True)

    def OnKeyDown(self, event):
        keycode = event.GetKeyCode()
        keystr = str(keycode) 
        wx.MessageBox(keystr, 'Info')
        
        event.Skip()

app = wx.App()
KeyEvent(None, -1, 'keyevent.py')
app.MainLoop()


作者: bearnedzq   发布时间: 2010-11-12

wx是上层框架,事件会按控件类型加工,panel容器来的可能被屏蔽些用不着的,改用textctrl试试...

作者: angel_su   发布时间: 2010-11-12