【发布时间】:2013-03-09 14:38:58
【问题描述】:
我要做什么
我正在尝试设计一个带有单圈计时功能的秒表。当您按“L”时,一圈完成,当您按“S”时,所有圈都完成,计时按顺序显示。
在 C++ 中,我可以使用 conio.h 中的函数 _getch() 来执行此操作,而且非常简单。我想用 python 编写这个程序,因为它会更容易,而且用 C++ 处理时间也很困难。
我仍然在此链接上编写了一个程序(用于立方体计时): Cube timer
问题
没有像 _getch() 这样的函数。这是一个问题,因为在一圈结束时你不能按一个键和一个回车键,因为这会花费时间并且对用户来说很烦人。
我读过的东西
我读到了 curses 库,可惜它没有 Windows 端口。
我尝试了一个按照网站应该可以运行的程序。这是来自链接
但它不起作用。
我尝试了什么:
msvcrt.getch()
我相信 FF 是 255 的十六进制等价物。
我不明白为什么会这样。
-
readch()@martineau 中的建议导入 msvcrt
def readch(echo=True): “在 Windows 上获取单个字符。” while msvcrt.kbhit(): # 清除键盘缓冲区 msvcrt.getch() ch = msvcrt.getch() while ch in '\x00\xe0': # 箭头或功能键前缀? msvcrt.getch() ch = msvcrt.getch() # 第二次调用返回实际键码 如果回声: msvcrt.putch(ch) 返回 ch.decode()
a = []
对于范围内的 i (10): a.append(readch())
我得到的错误:
>>>
Traceback (most recent call last):
File "C:/Python25/1.py", line 30, in <module>
a.append(readch())
File "C:/Python25/1.py", line 25, in readch
return ch.decode()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
我需要什么帮助
类似于 _getch() 的函数或在 Windows 机器上工作的等效函数。
机器规格
Python IDLE 2.5.4 或 2.6 或 2.7
Windows XP SP3
【问题讨论】:
-
您能向我们展示您的 Python 代码以及您是如何使用它的吗?
-
对不起。我在移动设备上。
-
如果你不发布实际代码很难提供帮助
-
好的,先生。我将在我登录机器后立即发布代码。
-
你试过
import sys而不是getcharsys.stdin.read(1)吗?