玩蛇网提供最新Python编程技术信息以及Python资源下载!

Python实现跨平台获取按键方法源码示例

python 培训

本文是一篇关于Python语言实现可以跨平台获取按键方法的源码示例文章。python 获取按键需要基于Windows及Unix等不同平台都能实现为最好,如下Python实现跨平台获取按键方法源码供大家参考,如果有需要请参照自己所需要应用的平台做适合的源码修改。

class _Getch:
    
    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:
    
    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: #www.iplaypython.com

            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


玩蛇网原创,转载请注明文章出处和来源网址:http://www.iplaypython.com/code/base/b2604.html



微信公众号搜索"玩蛇网Python之家"加关注,每日最新的Python资讯、图文视频教程可以让你一手全掌握。强烈推荐关注!

微信扫描下图可直接关注

玩蛇网Python新手QQ群,欢迎加入: ① 240764603 玩蛇网Python新手群
文章发布日期:2016-01-11 13:46 玩蛇网 www.iplaypython.com

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
相关文章推荐
别人正在看
特别推荐
去顶部去底部