暂停然后恢复输出



当我按下"esc"当我按下"home"键时,它又恢复了。差不多有90%了但是当我暂停脚本的时候按钮仍然功能如果脚本并不停了下来。我试着把睡眠放在这个脚本的其他地方,但这会导致极端的延迟,由于线程。如有任何帮助,我将不胜感激。

import time
from threading import Thread
from pynput import keyboard
from pynput.mouse import Button, Controller
from pynput.keyboard import KeyCode
mouse = Controller()

def exit_program():
def on_press(key):
if key == KeyCode.from_char('a'):
mouse.press(Button.right), mouse.release(Button.right)
if str(key) == 'Key.esc':
main.status = 'pause'
print("Paused")
if str(key) == 'Key.home':
main.status = 'run'
print("Resume")
elif str(key) == 'Key.end':
main.status = 'exit'
print("Exit")
exit()
listener = keyboard.Listener(
supress=True,
on_press=on_press)
listener.start()

def main():
main.status = 'run'
while True:
print('running')
time.sleep(1)
while main.status == 'pause':
time.sleep(1)
if main.status == 'exit':
print('Main program closing')
break

Thread(target=main).start()
Thread(target=exit_program).start()

您需要在on_press中检查main.status。你应该检查";a"one_answers";esc"只有暂停时,才有"home">

然而,一种更简洁的方法是使用适当的多线程通信原语。您可以使用设置为暂停和清除以恢复的threading.Event,或者使用queue.queue将消息从按键处理程序发送到main(事件队列)。这些可以让你完全摆脱睡眠调用。

最新更新