手机
当前位置:查字典教程网 >脚本专栏 >python >Python可跨平台实现获取按键的方法
Python可跨平台实现获取按键的方法
摘要:本文实例讲述了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实现的各种排序算法代码

python脚本实现查找webshell的方法

Python 开发Activex组件方法

python 动态获取当前运行的类名和函数名的方法

Python实现扫描指定目录下的子目录及文件的方法

wxpython中利用线程防止假死的实现方法

Python列表推导式的使用方法

python实现百度关键词排名查询

python实现网页链接提取的方法分享

Python下singleton模式的实现方法

精品推荐
分类导航