Python 学習:msvcrt.kbhit()

2014-07-10 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
4、2、0、3、0、 0、0、0、0、0(41)で、換算ポイント 68pt 。
「Firefox」今朝方、4位にダウン。
・-・ - -・

さて、本文。

4年ほど前(2010-11-21)の記事:
C言語:GetAsyncKeyState から kbhit に
で、
  ・・・・・
  この、「kbhit」だと、
  リアルタイムキー入力だし、窓がアクティブでないと受け付けない。
  説明では、
    kbhit()は、標準入力にデータがあるか調べ、
    デーがあれば 1 、データがなければ 0 を返す。
  そして、
    標準入力にデータあれば、getch() で読み込む。
  とかの処理が出来る。
  ・・・・・
と書いている。


今回、“Python”でも同様なことをしたくなった。

先ずは、「Python kbhit」で検索。

例の「Stack Overflow」に、
Python kbhit() problems
がある。
質問者のコードには、

  if msvcrt.kbhit():
    ・・・

の様な文がある。


で、回答は、

  The msvcrt.kbhit() function will only work
   if the program it is in has been run from the windows command line
   (or if a console window is opened for its input and output
    when you double click on its .py file).

  If you run from IDLE or using the pythonw.exe interpreter,
   the program won't be connected to a console window
   and the console-IO commands from msvcrt won't work.

そうすると、

<紙>のやりたいことは、

上記の“if文”のような記述ですか。

そして、これは、
1)windows コマンドラインからの実行か、
2).py ファイルのダブルクリックで、コンソール窓が出ている
場合にのみ有効。
つまり IDLE での実行とか、“pythonw.exe”での実行ではダメ。


もう一歩、調べてみた。

「Python msvcrt kbhit」で検索。

最初の検索と殆ど同じコトだったかナ。

1番目に、
34.2. msvcrt - MS VC++実行時システムの有用なルーチン群
がヒットする。

このページ内でのサーチで、・・・

  34.2.2. コンソール I/O 関連

  msvcrt.kbhit()

    読み出し待ちの打鍵イベントが存在する場合に真を返します。

  msvcrt.getch()

    打鍵を読み取り、読み出された文字を返します。
    コンソールには何もエコーバックされません。
    この関数呼び出しは読み出し可能な打鍵がない場合にはブロックしますが、
    文字を読み出せるようにするために Enter の打鍵を待つ必要はありません。
    打鍵されたキーが特殊機能キー (function key) である場合、
    この関数は '\000' または '\xe0' を返します;
    キーコードは次に関数を呼び出した際に返されます。
    この関数で Control-C の打鍵を読み出すことはできません。

  ・・・・・
  ・・・・・


そうすると、

<紙>流まとめは、・・・

import msvcrt

for 文とか、 while 文とか、・・・

# ----- 所望の処理。・・・

if msvcrt.kbhit(): # キー押下のチェック
a = msvcrt.getch() # 押下キー文字を取り込む
# ----- # 文字 a 又は、そのコード ord(a) での処理。
else:
pass

# ----- 所望の処理。・・・

pass


と云うことになりますネ。


おまけ(?) Windows 限定じゃない場合は、

pykbhit.py
このコードがヨロシイようで。


本日はここまで。


Python 学習は続く???


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140708
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク