#整理自http://code.activestate.com/recipes/134892/
#写脚本时用
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
分享到:
- 2008-07-28 15:52
- 浏览 2472
- 评论(0)
- 论坛回复 / 浏览 (0 / 2375)
- 查看更多
相关推荐
总结来说,Python实现跨平台获取按键的关键在于针对不同平台使用不同的方法。在Windows上,利用`msvcrt`;在Unix和类Unix系统上,利用`termios`和`tty`;而在Mac OS上,可能需要使用特定的事件处理API。通过这样的...
AutoPy的强大之处还在于其跨平台性。无论你是在Windows、Linux还是Mac OS上编写自动化脚本,AutoPy都能提供一致的API和功能,使得代码的移植变得容易,极大地增强了代码的可复用性。 ### 5. 应用场景 AutoPy的应用...
### Pygame教程:跨平台Python模块详解 #### Pygame简介 Pygame是一个强大的跨平台Python模块,专门为电子游戏设计。该模块集成了多种多媒体处理功能,包括图像、声音等,使其成为开发各种游戏的理想选择。Pygame...
【Python版微信群发助手】 ...同时,Python和按键精灵的结合,使得跨平台的群发需求得以满足,大大提升了工作效率。不过,在使用此类工具时,应遵守微信和QQ的使用协议,避免对他人造成骚扰,确保合法合规使用。
代码涉及到的模块包括os、sys、tty和termios,这些模块是实现跨平台键盘输入处理的关键。下面将详细解读代码中涉及的关键知识点。 首先,代码通过os模块获取操作系统的相关信息;sys模块用于访问与Python解释器紧密...
- **跨平台兼容性**:支持多种操作系统,如Windows、Linux等。 - **安全性**:通过身份验证机制确保通信安全。 ##### 2. 使用Pygame包读取Xbox 360手柄按键 **概述:** - **Pygame** 是一个基于Python的开源游戏...
【pygame】是Python中的一个开源库,它建立在SDL(Simple DirectMedia Layer)之上,为Python提供了跨平台的多媒体功能。Pygame的核心功能包括:窗口管理器、事件处理、色彩管理、图像加载与绘制、音频播放和视频...
wxPython是一个Python绑定到wxWidgets库的接口,用于创建原生外观的跨平台GUI应用程序。虽然不是Pygame的一部分,但在Python2.7项目中,如果你需要创建桌面应用程序,wxPython是一个不错的选择。 总结来说,Python...
OpenCV(Open Source Computer Vision Library)是一个跨平台的计算机视觉库,它包含了大量的图像和视频处理函数,旨在实现实时的计算机视觉任务。OpenCV支持C++、Python、Java等多种编程语言,并且在学术界和工业界...
2. **PyGTK**: 是GTK+的一个Python绑定库,用于创建跨平台的桌面应用程序。 3. **Glade3**: 是一个所见即所得(WYSIWYG)的GUI设计器,用于帮助开发者快速构建PyGTK应用程序的用户界面。 #### 三、项目核心逻辑分析...
由于Python语言的跨平台特性,虽然工具在Windows系统上开发验证,但理论上应在其他操作系统上也能运行。文档中也提到了对Python语言版本的选择,使用了Python2.7.14进行开发,并且讨论了Python 3的新版本与HAPI.PYV....
- **跨平台**: 作为Python项目,MellPlayer支持Windows、Linux和macOS等操作系统。 - **音频格式支持**: 支持多种音频格式,如MP3、WAV、FLAC等,这得益于Python的多媒体处理库。 - **基本控制功能**: 包括播放、...
pygame是一个用于创建游戏的跨平台Python模块集合,它包含图形和声音库,可以用来制作2D游戏。 3. 游戏初始化与设置:程序开始部分提到了pygame初始化以及创建游戏窗口、设置显示标题和字体等。pygame.init()函数...
Python是一种强大的、跨平台的编程语言,被广泛用于各种领域,包括Web开发、数据分析、人工智能等。在系统管理和自动化任务中,Python也扮演着重要角色,尤其在命令行界面(CLI)工具的开发上。本项目是“Python-一...
使用`pyHook`,你可以监听到每个按键的按下和释放,获取按键的ASCII码或扫描码,并进行相应的处理。 2. **pynput库**:`pynput`是一个跨平台的库,可以在Windows、Linux和MacOS上使用。它通过模拟底层输入事件来...
一个简单的跨平台Python 2/3模块,用于检测鼠标和键盘输入。 注意:此模块正在建设中,尚待解决。 安装 pip install pykeymouse 用法示例 获取自上次调用pykeymouse.get()以来发生的所有事件: >>> import ...
首先,游戏的核心是Python 3,这是一个强大的、跨平台的解释型语言,以其易读性和简洁的语法深受开发者喜爱。Python 3为游戏开发提供了丰富的库支持,Pygame就是其中之一,它是Python游戏开发的一个重要工具包,包含...
在Windows环境下,Python可以通过各种方式访问摄像头,例如使用OpenCV库,这是一个广泛用于计算机视觉和图像处理的开源库,提供了跨平台的接口来捕获、处理和显示视频流。 “双击后可以捕获摄像头图像”说明程序...