我正在尝试创建类似“垃圾邮件机器人”的东西(用于教育目的)。我想要这样的东西:当我按下键盘上的一个键(例如:f1)时,函数(while 循环)应该继续循环并仅在我再次按下同一个键时停止(在这个例子中:f1)。这是我制作的代码...
import pyautogui
from pynput import keyboard
import time
import threading
text = pyautogui.prompt('Text: ')
def text():
while running:
pyautogui.press('enter')
pyautogui.write(text)
pyautogui.press('enter')
time.sleep(3)
def on_press(key):
global running
if key == keyboard.Key.f1:
running = True
t = threading.Thread(target=text)
t.start()
if key == keyboard.Key.f2:
return False
def on_release(key):
global running
if key == keyboard.Key.f2:
running = False
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
但是,此代码使用 2 个不同的键来启动/停止(f1 和 f2),并在我按 f2 时退出程序。是否可以仅使用 1 个键来切换开始/停止?此外,当我按下“停止”键时,我不想退出程序,我希望它继续运行(能够随时启动/停止循环而不退出)。
您应该将running
变量用作只有两种状态的简单状态机:
running = False
def on_press(key):
global running
if key == keyboard.Key.f1:
running ^= True
if running:
t = threading.Thread(target=text)
t.start()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句