我想写一个小脚本与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')"影响代码,如果它停止它。