ホームページ バックエンド開発 Python チュートリアル Python可跨平台实现获取按键的方法

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

Jun 10, 2016 pm 03:17 PM
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程序设计有所帮助。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Deepseek Xiaomiをダウンロードする方法 Deepseek Xiaomiをダウンロードする方法 Feb 19, 2025 pm 05:27 PM

Deepseek Xiaomiをダウンロードする方法

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Jul 01, 2024 am 07:22 AM

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表

Apple と Huawei は両方ともボタンのない携帯電話を作りたがっていましたが、Xiaomi が最初にそれを作りましたか? Apple と Huawei は両方ともボタンのない携帯電話を作りたがっていましたが、Xiaomi が最初にそれを作りましたか? Aug 29, 2024 pm 03:33 PM

Apple と Huawei は両方ともボタンのない携帯電話を作りたがっていましたが、Xiaomi が最初にそれを作りましたか?

どうやって彼にdeepseekに尋ねますか どうやって彼にdeepseekに尋ねますか Feb 19, 2025 pm 04:42 PM

どうやって彼にdeepseekに尋ねますか

NET40とはどのようなソフトウェアですか? NET40とはどのようなソフトウェアですか? May 10, 2024 am 01:12 AM

NET40とはどのようなソフトウェアですか?

DeepSeekを検索する方法 DeepSeekを検索する方法 Feb 19, 2025 pm 05:18 PM

DeepSeekを検索する方法

PHP フレームワークはクロスプラットフォーム開発における開発効率をどのように向上させますか? PHP フレームワークはクロスプラットフォーム開発における開発効率をどのように向上させますか? Jun 02, 2024 pm 09:49 PM

PHP フレームワークはクロスプラットフォーム開発における開発効率をどのように向上させますか?

DeepSeekをプログラムする方法 DeepSeekをプログラムする方法 Feb 19, 2025 pm 05:36 PM

DeepSeekをプログラムする方法

See all articles