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映射列表实例分析
Jan 26 Python
利用Python的Django框架中的ORM建立查询API
Apr 20 Python
Python socket实现的简单通信功能示例
Aug 21 Python
TensorFlow实现Logistic回归
Sep 07 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
python爬取指定微信公众号文章
Dec 20 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
对python3 sort sorted 函数的应用详解
Jun 27 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
keras导入weights方式
Jun 12 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
Python爬取梨视频的示例
Jan 29 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 文件状态缓存带来的问题
2008/12/14 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
Python常见数据结构详解
2014/07/24 Python
Python中的引用和拷贝浅析
2014/11/22 Python
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
numpy数组拼接简单示例
2017/12/15 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
关爱留守儿童标语
2014/06/18 职场文书
市场总监岗位职责
2015/02/11 职场文书
幼师中班个人总结
2015/02/12 职场文书