[Tutor] How to use getch()?

Kent Johnson kent37 at tds.net
Sun Aug 27 19:55:01 CEST 2006


Dick Moores wrote:
> At 09:51 AM 8/27/2006, Kent Johnson wrote:
>   
>> Dick Moores wrote:
>>     
>>> I'm trying to figure out how to change what a script does while it is
>>> running, by pressing a key, such as "k". Can getch() be used for
>>> this?
>>>       
>> Google 'python getch' or see this recipe by our very own Danny Yoo:
>>     
>
> So now I have, thanks to Danny Yoo:
>
> =====================================
> class _Getch:
>      """Gets a single character from standard input.  Does not echo to the
> screen."""
>      def __init__(self):
>          try:
>              self.impl = _GetchWindows()
>          except ImportError:
>              self.impl = _GetchUnix()
>
>      def __call__(self): return self.impl()
>
> class _GetchWindows:
>      def __init__(self):
>          import msvcrt
>
>      def __call__(self):
>          import msvcrt
>          return msvcrt.getch()
>
> c = 0
> getch = _Getch()
> while True:
>      c += 1
>      if getch == "k":
>   
This should be
  if getch() == "k":

getch is a callable object (it implements __call__()) and is used like a 
function.

If you only want to run on Windows, as your code suggests, just call 
msvcrt.getch() directly. This is a blocking call - it won't return until 
a key is pressed. If you don't want to block, use msvcrt.kbhit() to 
check whether a key is available before calling getch().


>          break
> print c
> ================================================
>
> No more errors, but it doesn't do what I wanted. More help, please.
>
> Dick Moores
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>
>   




More information about the Tutor mailing list