pycharm 如何在Python中使用非阻塞函数获取用户输入?

tpgth1q7  于 2023-08-05  发布在  PyCharm
关注(0)|答案(1)|浏览(116)

我尝试了很多方法来找到如何使用msvcrt.kbhit(),但是我写的所有东西,它都工作不正常...我试过:

while True:
    msg = ''
    print("Waiting for your message.\n")
    time.sleep(1)  # I tried with and without this line...  
    if msvcrt.kbhit():
        msg = msvcrt.getch().decode()
        print(msg, end='', flush=True)
        if ord(msg) == 13:  # Client enter 'ENTER'
            break

字符串
在这一行中:print(msg, end='', flush=True)endflush是红色的???
(除此之外,所有的代码都工作得很好!当我使用INPUT时-一切都很好...)

gfttwv5a

gfttwv5a1#

好的,这段代码是input()的“替代品”,但使用了msvcrt

import msvcrt
import time

def nonblocking_input(prompt):
    print(prompt, end='', flush=True)
    msg = ''
    while True:
        if msvcrt.kbhit():
            ch = msvcrt.getch().decode()
            if ord(ch) == 13:
                print()
                return msg
            print(ch, end='', flush=True)
            msg += ch
        time.sleep(0.05)

def main():
    msg = nonblocking_input('Waiting for your message: ')
    print(f'Ok, got:"{msg}"')

main()

字符串
我使用time.sleep(0.05)来减少平均cpu负载。
我在windows cmd提示符下用python测试了这段代码,因为pycharm似乎在msvcrt上有问题。

相关问题