Python 与键盘输入抗争

Python 与键盘输入抗争,python,python-3.x,Python,Python 3.x,我发现这段代码使用msvcrt查看键盘输入,如下所示: import msvcrt def kbfunc(): x = msvcrt.kbhit() if x: ret = ord(msvcrt.getch()) else: ret = 0 print(ret) while True: kbfunc() 但当我运行这段代码时,所有打印的都是0。我如何修改这一点? 谢谢kbhit和getch仅适用于控制台窗口中

我发现这段代码使用msvcrt查看键盘输入,如下所示:

import msvcrt 

def kbfunc(): 
    x = msvcrt.kbhit()
    if x: 
        ret = ord(msvcrt.getch()) 
    else: 
        ret = 0 
    print(ret)
while True:
    kbfunc()
但当我运行这段代码时,所有打印的都是0。我如何修改这一点?
谢谢

kbhit
getch
仅适用于控制台窗口中的键盘输入。它们不能在空闲或任何其他不使用控制台的GUI环境中工作。您可以调用WinAPI
AllocConsole
AttachConsole
,然后在attached console窗口中键入。连接后,您可以打开“CONIN$”从控制台读取,打开“CONOUT$”写入。@eryksun您是否可以发布一段代码来显示这一点,因为我很难理解,没有示例,这只是为了在空闲状态下调试?如果是这样,您可能会发现通过
py-3-mdilelib
从命令提示符运行它更容易。然后,为了进行测试,您可以在控制台窗口中键入。脚本应该是通过python.exe运行的.py文件。这将自动继承或分配一个控制台。@eryksun本质上,我正在使用tkinter创建一个游戏,需要玩家通过按箭头键移动等方式激活功能。但我需要一种方法来记录输入,以便检查它是否是我想要的箭头。所以我查了一下,看看基本上如何获得键盘输入,但不知道它是如何工作的。好的,你需要在tkinter中处理按键事件。有关Python 2示例,请参见。在Python3中,名称和包布局是不同的,但是让示例正常工作应该不难。