2013-03-31 59 views
0

由於某種原因它沒有閱讀任何按鍵我花了整整一天尋找的例子和修復這個和無濟於事我找不出原因。嘗試使用面板如下所示,但我用來了解wxpython的教程有問題,即使是代碼的複製粘貼也不起作用。那裏的例子不使用面板,但只是一個self.Bind(wx.EVT_KEY_UP,self.keyPressed)。任何人都可以爲這個初學者提供幫助嗎?綁定到框架wxPython

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

綁定到面板這樣

self.panel.Bind(wx.EVT_KEY_DOWN, self.keyPressed) 
0

面板可能很難結合,因爲它喜歡通過它專注於它的孩子。該框架做了很多相同的事情。如果你想要做的是綁定按鍵,你可能想看看在AcceleratorTable:

而這些可能會幫助你太:

+0

邁克,謝謝你的幫助!非常感激 – user2079902