我正在尝试做什么
我正在尝试设计一个具有单圈计时功能的秒表。当您按“L”时,一圈将完成,当您按“S”时,所有圈将完成,并按顺序显示计时。
在 C++ 中,我可以使用 conio.h 中的函数 _getch() 来完成此操作,这将非常容易。我想用 python 编写这个程序,因为它会更容易,而且 C++ 中的时间处理也被证明很困难。
我仍然在此链接上编写了一个程序(用于立方体计时):魔方计时器
Problem
没有像 _getch() 这样的函数。这是一个问题,因为在一圈结束时,您无法按下某个键和一个回车键,因为这会花费时间并且让用户感到恼火。
我读过的东西
我读到了有关curses 库的内容,但可惜它没有Windows 端口。
我尝试了一个应该可以根据网站运行的程序。这是来自链接的
链接到 getch 食谱
但这没有用。
我尝试过的:
msvcrt.getch()
>>> import msvcrt
>>> msvcrt.getch()
'\xff'
我认为 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 = []
对于范围(10)内的 i:
a.追加(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 空闲 2.5.4 或 2.6 或 2.7
Windows XP SP3