• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Python 获取按键(跨平台)

python 水墨上仙 3006次浏览

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 获取按键(跨平台)
喜欢 (0)
加载中……