gpt4 book ai didi

python - wxpython 无法捕获 EVT_KEY_DOWN enent

转载 作者:行者123 更新时间:2023-11-28 22:50:50 24 4
gpt4 key购买 nike

我无法捕获 EVT_KEY_DOWN 事件。但是可以捕获EVT_KEY_UP。
Python版本: 2.7.3
wxPython 版本: 2.8.12.1 (gtk2-unicode)
系统信息: Mint 14 Nadia,Linux 3.5.0-17-generic(x86_64)
以下是我的代码

#!/usr/bin/env python

import sys, os
import wx
class WinFrame(wx.Frame):
def __init__(self, parent, title):
super(WinFrame, self).__init__(parent,
title=title,
size=(400,400))
self.panel = wx.Panel(self,-1, size=(400,400))
self.panel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
self.panel.Bind(wx.EVT_KEY_UP, self.OnKeyUp)
def OnKeyUp(self, event):
print 'up'

def OnKeyDown(self, event):
print 'down'

class PicSampleApp(wx.App):
def __init__(self):
super(PicSampleApp, self).__init__(0)

def createFrame(self):
self.frame = WinFrame(None, "test")
self.frame.Show(True)
self.SetTopWindow(self.frame)


app = PicSampleApp()
app.createFrame()
app.MainLoop()

最佳答案

我在捕获 wx.EVT_KEY_DOWN 和 wx.EVT_KEY_UP 时总是遇到问题。原因的解释让我有点难以理解,但我知道切换到 EVT_CHAR_HOOK 通常对我有用。尝试这样的事情:

#!/usr/bin/env python

import sys, os
import wx
class WinFrame(wx.Frame):
def __init__(self, parent, title):
super(WinFrame, self).__init__(parent,
title=title,
size=(400,400))
self.panel = wx.Panel(self,-1, size=(400,400))
self.panel.Bind(wx.EVT_CHAR_HOOK, self.OnKeyPress)

def OnKeyPress(self, event):
keyCode = event.GetKeyCode()
if keyCode == wx.WXK_DOWN:
print 'down'
elif keyCode == wx.WXK_UP:
print 'up'

class PicSampleApp(wx.App):
def __init__(self):
super(PicSampleApp, self).__init__(0)

def createFrame(self):
self.frame = WinFrame(None, "test")
self.frame.Show(True)
self.SetTopWindow(self.frame)

app = PicSampleApp()
app.createFrame()
app.MainLoop()

如果您希望事件继续传播,您可能还想将 event.Skip() 放在 OnKeyPress 的底部。

关于python - wxpython 无法捕获 EVT_KEY_DOWN enent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22294147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com