当Autokey按下一个键时,我如何停止while循环?



我想写一个小脚本与Autokey(不是普通的Python)在Linux Mint上按下一个键并在我按下另一个特定键后停止,但我无法让它在我按下这个特定键后停止循环。

我让循环工作,但我不能让它停止。

import time
a = True
b = keyboard.press_key('s')
keyboard.release_key('s')
while a:
keyboard.send_key("a", repeat=5)
time.sleep(2)
if b:
break

输出字母"a"无限期,在我按下" "它停不下来,我不知道我做错了什么

我读了关于while函数和break,但我发现的所有例子都是在达到一定数字后循环停止,这些带有数字的例子与我试图用这种脚本实现的不同,所以我希望有人能帮助我弄清楚。

您必须使用键盘模块,因为press_key用于"按";不能检测的键

如果你还没有安装键盘,你可以按cmd来安装。pip install keyboard

在之后,您可以按以下方式在python中添加代码,按"将打印"5次并按"&;&;"将停止程序。

import keyboard
while True: 
if keyboard.is_pressed('q'):  # pressing q will print a 5 times
for i in range(5):
print("a")
break  
elif keyboard.is_pressed('s'): # pressing s will stop the program
break

您可以使用evdev检查是否按下了键

检查您的InputDevice查看python -m evdev.evtest

检查s键是否按下:

import evdev
from evdev import ecodes as e
device = evdev.InputDevice('/dev/input/event7')
if e.KEY_S in device.active_keys():
do_something()

乍一看,你的问题是你从来没有更新b的值,它只在循环之前赋值。您可能应该尝试这样做:

import time
a = True
keyboard.release_key('s')
while a:
keyboard.send_key("a", repeat=5)
b = keyboard.press_key('s')
time.sleep(2)
if b:
break

我不知道怎么"b = keyboard.press_key('s')"影响代码,如果它停止它。

最新更新