由于某种原因它没有读取任何按下的键我花了一整天寻找示例和修复此功能并无济于事我无法弄清楚原因。尝试使用面板如下所示,但我用来了解wxpython的教程是有问题的,甚至那些代码的复制粘贴也不起作用。这个例子不使用面板,只是一个self.Bind(wx.EVT_KEY_UP,self.keyPressed)。任何人都可以向这位初学者提供帮助吗?
import wx
import time
from threading import Thread
class frame(wx.Frame):
def __init__ (self):
style = (wx.CLIP_CHILDREN | wx.STAY_ON_TOP | wx.FRAME_NO_TASKBAR | wx.NO_BORDER |wx.FRAME_SHAPED)
wx.Frame.__init__(self,None, title='test', style = style, size = (300,150))
self.panel = wx.Panel(self,-1)
self.Bind(wx.EVT_KEY_DOWN, self.keyPressed, self.panel)
self.SetFocus()
self.SetTransparent(0)
self.Show(True)
def keyPressed(self,event=None):
print "somethine is pressed"
key = event.GetKeyCode()
if key == wx.WXK_ESCAPE or key == ord('Q'):
self.Close(force=True)
self.Show(False)
else:
event.Skip()
def duration(self, dur):
start = int(time.time())
self.closeTime = False
while not self.closeTime:
actDur = int(time.time()) -start
if actDur == dur:
self.Show(False)
self.closeTime = True
app = wx.App(False)
f = frame()
#timing = Thread(target=f.duration, args= (5,))
#timing.start()
app.MainLoop()
答案 0 :(得分:0)
像这样绑定到面板
self.panel.Bind(wx.EVT_KEY_DOWN, self.keyPressed)
答案 1 :(得分:0)
面板可能难以绑定,因为它喜欢将焦点转移到其子节点上。框架做了很多相同的事情。如果您只想绑定按键,则可能需要查看AcceleratorTable:
这些也可能对你有所帮助: