为什么wxPython面板屏蔽按键按下事件?

2024-10-01 11:42:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能解释为什么添加面板会隐藏左右箭头键吗?在

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应用程序,面板似乎是必需的。在


Tags: selfeventidapp面板initdefany
1条回答
网友
1楼 · 发布于 2024-10-01 11:42:07

实际上,你可以这样做。在

要么调用wx.EVT_CHAR_HOOK而不是面板上的wx.EVT_KEY_DOWN(尽管这样,事件会一直传播到“收件人”父窗口(框架),而不是由面板严格处理,因此我认为您最好使用第二个选项):

panel.Bind(wx.EVT_CHAR_HOOK, self.onKeyPress)

或者您在panel构造函数中定义它wx.WANTS_CHARS,如wxpython window documentation中所述,以允许它捕捉这些传统的字符,如下所示:

^{pr2}$

相关问题 更多 >