有人可以解释为什么添加一个面板会隐藏左右箭头键吗?
import wx
class AForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Press Key")
panel = wx.Panel(self, wx.ID_ANY)
panel.Bind(wx.EVT_KEY_DOWN, self.onKeyPress)
self.Show()
def onKeyPress(self, event):
keycode = event.GetKeyCode()
print keycode
app = wx.App()
form = AForm()
app.MainLoop()
如果我移除面板就可以了!但是,面板似乎有必要使表单看起来像Windows应用程序。
答案 0 :(得分:0)
实际上有两种用途可以解决这个问题。
要么在面板上调用wx.EVT_CHAR_HOOK而不是wx.EVT_KEY_DOWN
,(尽管这样事件会一直传播到父窗口(框架),而不是由严格处理小组,所以我认为你最好选择第二个选项):
panel.Bind(wx.EVT_CHAR_HOOK, self.onKeyPress)
或者在面板构造函数中定义wxpython window documentation中提到的wx.WANTS_CHARS
,以允许它像这样捕获那些aditional字符:
panel = wx.Panel(self, wx.ID_ANY, style= wx.WANTS_CHARS)
panel.Bind(wx.EVT_KEY_DOWN, self.onKeyPress)