1

警告:我的英语很烂,而且我对python真的很陌生
所以我正在制作一个需要特定(例如空格键)按键才能继续循环的程序,例如:
for i in *some sort of list*: print(something) *waits for a key*
我最后一行的方法是键盘模块(不是来自pynput),它具有功能is_pressed。当我按下一个键时,我得到了输出:
*something* *something* *something* *repeats for several times* 我知道该函数检测到key press而不是press and release,所以一旦我释放它,这个输出就会停止。但这不是我的程序的工作方式。每次我释放该键时它都应该响应。不幸的是,我找不到调用的函数is_released或其他东西,并且模块pynput无法使用Listener. 至少我不能。

另外,有没有办法在计算机中同时拥有keyboardpynput导入?keyboard安装时我的 VS Code 会忽略pynput

编辑:这是我解决问题的方法,但它是超级转储:
while True: if keyboard.is_pressed('space'): while True: if not keyboard.is_pressed('space'): break break 有没有做同样事情的函数?

4

1 回答 1

1

因为它只检测按键,所以使用标志。我认为这样的事情可以做到: 1. 制作一个 bool 变量来检测单个按键 2. 如果按键被按下,bool 将设置为 true 3. 如果 bool 为 true 而不是 key.is_pressed:做你的事情4.运行后设置bool为false

例如,在代码中,这将是这样的:

keypress = False
key = 'space'
while True:
    if keypress and not keyboard.is_pressed(key):
        '''DO YOUR THING'''
        #beak out of while loop?
        keypress = False
        break
    elif keyboard.is_pressed(key) and not keypress:
        keypress = True

不知道这是否是你会做的,但我想你可以从中得到我的想法。祝你好运!

于 2018-09-30T10:34:16.473 回答