python中pynput包如何中断死循环操作

发布于 2022-09-12 00:40:02 字数 1195 浏览 52 评论 0

今天应了一个网友的要求帮他做一个自动嗑药的按键脚本,却发现了好多问题。
我的想法:监听键盘,按压f5开始一个循环,按另外一个键跳出循环;但是一旦进入循环后pynput无法再次监听键盘,应该是在等待死循环结束。
查阅了官方文档后,官方给出了一个解决方法,为长时间操作添加一个线程,但是依然不行。。。
官方解释:
image.png

from pynput.keyboard import Key, Controller  
from pynput import keyboard  
import time  
import threading  
  
def on_press(key):  
    print(key)  
    t1 = threading.Thread(target=action())  
    if key == keyboard.Key.f5:  
        t1.start()  
        print('开始循环')  
    elif key == keyboard.Key.tab:  
        print('跳出循环')  
        threading.Thread._Thread__stop(t1)  
  
# 循环操作  
def action():  
    while True:  
        keyboard1 = Controller()  
        keyboard1.press('1')  
        keyboard1.release('1')  
        keyboard1.press('2')  
        keyboard1.release('2')  
        keyboard1.press('3')  
        keyboard1.release('3')  
        time.sleep(1)  
        keyboard1.press('4')  
        keyboard1.release('4')  
        keyboard1.press('5')  
        keyboard1.release('5')  
        time.sleep(1)  
while True:  
    with keyboard.Listener(  
        on_press=on_press) as listener:  
        listener.join()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文