抓取键盘命中不可靠/ Python

问题描述 投票:0回答:1

背景是设计一个程序,它在无限循环中运行,从某个地方读取实时数据。我希望通过键盘的交互来控制这个程序(没有'Enter')。为此,我遇到了以下片段。

import msvcrt

def keypress():
    try:
     if msvcrt.kbhit(): #Keyboard hit?
        key = msvcrt.getch().decode("utf-8").lower()    
        return key
    except UnicodeDecodeError:
     pass

while not False:
    print('rainy rainy rain rain')
    if keypress() == "e": #e: exit
        exit()
    if keypress() == "w": # w: wait
        waiting = True
        while waiting == True:
            print("waiting waiting waiting")
            if keypress() == "w":
                waiting = False

我知道为了等待而召唤一个新的无限循环是无聊的,但疯狂的是“e”的打击似乎比“w”的命中更成功。但是在每种情况下,一些命中甚至根本没有登记。 - >有问题可以解决这个问题吗? Windows也能够捕获每一个键盘命中!

python keyboard keypress msvcrt
1个回答
0
投票
while not False:
 print('rainy rainy rain rain')
 key = keypress()
 if key == "e": #e: exit
    exit()
 if key == "w": # w: wait
    waiting = True
    while waiting == True:
        print("waiting waiting waiting")
        if keypress() == "w":
            waiting = False

......这个小小的改变,解决了这个问题。我认为调用keypress()[以及msvcrt.getch()函数]需要花费很多时间来防止另一个键盘被识别出来。但为什么?不应该关键的beeing缓冲!?因此,经过的时间应该不重要!?

© www.soinside.com 2019 - 2024. All rights reserved.