检测按键是否按过一次

2024-07-05 15:15:18 发布

您现在位置:Python中文网/ 问答频道 /正文

只要按下我的f键,我就想做一个动作。问题是它会滥发动作

import win32api

while True:
    f_keystate = win32api.GetAsyncKeyState(0x46)

    if f_keystate < 0:
        print("Pressed!")

我想这个没有“按下!”被垃圾邮件,但只打印一次


Tags: importtrueif垃圾邮件print动作whilepressed
2条回答

您需要一个状态变量来跟踪按键释放后是否被按下

f_pressed = False

while not f_pressed:
    f_pressed = win32api.GetAsyncKeyState(0x46) < 0

print("Pressed!")

因为在while循环中,当按下f键时,GetAsyncKeyState将检测到f键始终处于按下状态。结果,print语句被重复调用

尝试以下代码,您将得到想要的结果:

import win32api

while True:
    keystate = win32api.GetAsyncKeyState(0x46)&0x0001
    if keystate > 0:
       print('F pressed!')

相关问题 更多 >