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


Posted in Python onMarch 05, 2015

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
python通过urllib2获取带有中文参数url内容的方法
Mar 13 Python
Python使用Flask框架获取当前查询参数的方法
Mar 21 Python
Python深入06——python的内存管理详解
Dec 07 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
Aug 02 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
Jan 08 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
基于Python打造账号共享浏览器功能
May 30 Python
python编写俄罗斯方块
Mar 13 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 Python
Python 如何解决稀疏矩阵运算
May 26 Python
Python读取mp3中ID3信息的方法
Mar 05 #Python
Python查找相似单词的方法
Mar 05 #Python
Python兔子毒药问题实例分析
Mar 05 #Python
Python获取服务器信息的最简单实现方法
Mar 05 #Python
Python实现简单的可逆加密程序实例
Mar 05 #Python
Python装饰器的函数式编程详解
Feb 27 #Python
python分析nignx访问日志脚本分享
Feb 26 #Python
You might like
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP实现的微信公众号扫码模拟登录功能示例
2019/05/30 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
wxpython绘制音频效果
2019/11/18 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
介绍一下linux的文件权限
2014/07/20 面试题
物流专业求职计划书
2014/01/10 职场文书
单位单身证明范本
2014/01/11 职场文书
写演讲稿要注意的六件事
2014/01/14 职场文书
大学总结自我鉴定
2014/01/18 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
个人欠款担保书
2014/05/20 职场文书
新店开张活动方案
2014/08/24 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
工作调动申请报告
2015/05/18 职场文书
淮海战役观后感
2015/06/11 职场文书
小王子读书笔记
2015/06/29 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
HTML基础详解(下)
2021/10/16 HTML / CSS
防止web项目中的SQL注入
2021/12/06 MySQL
基于Python实现股票收益率分析
2022/04/02 Python