Python可跨平台实现获取按键的方法
Python可跨平台实现获取按键的方法
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了Python可跨平台实现获取按键的方法。分享给大家供大家参考。具体如下:复制代码代码如下:class_Getch:"""Get...

本文实例讲述了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学习
脚本专栏子分类