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

yipeiwu_com5年前Python基础

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

相关文章

Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】

Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】

本文实例讲述了Python2.7基于淘宝接口获取IP地址所在地理位置的方法。分享给大家供大家参考,具体如下: #!/usr/bin/python import sys, os, u...

python模拟鼠标拖动操作的方法

python模拟鼠标拖动操作的方法

本文实例讲述了python模拟鼠标拖动操作的方法。分享给大家供大家参考。具体如下: pdf中的书签只有页码,准备把现有书签拖到一个目录中,然后添加自己页签。重复的拖动工作实在无趣,还是让...

python获得文件创建时间和修改时间的方法

本文实例讲述了python获得文件创建时间和修改时间的方法。分享给大家供大家参考。具体如下: 这里需要用户从控制台输入文件路径 import os.path, time import...

Python中实现两个字典(dict)合并的方法

本文实例讲述了Python中实现两个字典(dict)合并的方法,分享给大家供大家参考。具体方法如下: 现有两个字典dict如下: dict1={1:[1,11,111],2:[2,2...

wxPython多个窗口的基本结构

如何在一个wxpython APP里面创建两个框架呢?供大家参考,具体内容如下 代码: import ... import ... class MyFrame(wx.Frame):...