源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Python可跨平台实现获取按键的方法

  • 时间:2022-09-21 11:20 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Python可跨平台实现获取按键的方法
本文实例讲述了Python可跨平台实现获取按键的方法。分享给大家供大家参考。具体如下:
[u]复制代码[/u] 代码如下:
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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部