Python可跨平台实现获取按键的方法
本文实例讲述了Python可跨平台实现获取按键的方法。分享给大家供大家参考。具体如下:
class_Getch: """Getsasinglecharacterfromstandardinput. Doesnotechotothescreen.""" def__init__(self): try: self.impl=_GetchWindows() exceptImportError: try: self.impl=_GetchMacCarbon() exceptAttributeError: self.impl=_GetchUnix() def__call__(self):returnself.impl() class_GetchUnix: def__init__(self): importtty,sys,termios#importtermiosnoworelseyou'llgettheUnixversionontheMac def__call__(self): importsys,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) returnch class_GetchWindows: def__init__(self): importmsvcrt def__call__(self): importmsvcrt returnmsvcrt.getch() class_GetchMacCarbon: """ AfunctionwhichreturnsthecurrentASCIIkeythatisdown; ifnoASCIIkeyisdown,thenullstringisreturned. The pagehttp://www.mactech.com/macintosh-c/chap02-1.htmlwas veryhelpfulinfiguringouthowtodothis. """ def__init__(self): importCarbon Carbon.Evt#seeifithasthis(inUnix,itdoesn't) def__call__(self): importCarbon ifCarbon.Evt.EventAvail(0x0008)[0]==0:#0x0008isthekeyDownMask return'' else: # #Theeventcontainsthefollowinginfo: #(what,msg,when,where,mod)=Carbon.Evt.GetNextEvent(0x0008)[1] # #Themessage(msg)containstheASCIIcharwhichis #extractedwiththe0x000000FFcharCodeMask;this #numberisconvertedtoanASCIIcharacterwithchr()and #returned # (what,msg,when,where,mod)=Carbon.Evt.GetNextEvent(0x0008)[1] returnchr(msg&0x000000FF) if__name__=='__main__':#alittletest print'Pressakey' inkey=_Getch() importsys foriinxrange(sys.maxint): k=inkey() ifk<>'':break print'youpressed',k
希望本文所述对大家的Python程序设计有所帮助。