
 本文实例讲述了Python可跨平台实现获取按键的方法。分享给大家供大家参考。具体如下:
 代码如下:
class _Getch: 
 """Gets a single character from standard input. Does not echo to the screen.""" 
 def __init__(self): 
 try: 
 self.impl = _GetchWindows() 
 except ImportError: 
 try: 
 self.impl = _GetchMacCarbon() 
 except AttributeError: 
 self.impl = _GetchUnix() 
 def __call__(self): return self.impl() 
class _GetchUnix: 
 def __init__(self): 
 import tty, sys, termios # import termios now or else you'll get the Unix version on the Mac 
 def __call__(self): 
 import sys, tty, termios 
 fd = sys.stdin.fileno() 
 old_settings = termios.tcgetattr(fd) 
 try: 
 tty.setraw(sys.stdin.fileno()) 
 ch = sys.stdin.read(1) 
 finally: 
 termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) 
 return ch 
class _GetchWindows: 
 def __init__(self): 
 import msvcrt 
 def __call__(self): 
 import msvcrt 
 return msvcrt.getch() 
class _GetchMacCarbon: 
 """ 
 A function which returns the current ASCII key that is down; 
 if no ASCII key is down, the null string is returned. The 
 page http://www.mactech.com/macintosh-c/chap02-1.html was 
 very helpful in figuring out how to do this. 
 """ 
 def __init__(self): 
 import Carbon 
 Carbon.Evt #see if it has this (in Unix, it doesn't) 
 def __call__(self): 
 import Carbon 
 if Carbon.Evt.EventAvail(0x0008)[0]==0: # 0x0008 is the keyDownMask 
 return '' 
 else: 
 # 
 # The event contains the following info: 
 # (what,msg,when,where,mod)=Carbon.Evt.GetNextEvent(0x0008)[1] 
 # 
 # The message (msg) contains the ASCII char which is 
 # extracted with the 0x000000FF charCodeMask; this 
 # number is converted to an ASCII character with chr() and 
 # returned 
 # 
 (what,msg,when,where,mod)=Carbon.Evt.GetNextEvent(0x0008)[1] 
 return chr(msg & 0x000000FF) 
if __name__ == '__main__': # a little test 
 print 'Press a key' 
 inkey = _Getch() 
 import sys 
 for i in xrange(sys.maxint): 
 k=inkey() 
 if k<>'':break 
 print 'you pressed ',k
希望本文所述对大家的Python程序设计有所帮助。