Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自动点击器未关闭_Python - Fatal编程技术网

Python 自动点击器未关闭

Python 自动点击器未关闭,python,Python,我正在做一个自动点击器,它可以用“e”来关闭和打开,但在“e”之后 它会打开,但不会关闭 我试过多次修改代码,但仍然找不到正确的答案 问题 导入pynput 从pynput.keyboard导入键代码,侦听器 从pynput.mouse导入按钮,控制器 导入时间 鼠标=控制器() def onoff(按键代码,on=None): rkey=str(键码).strip(“”) 如果rkey==“e”: 如果未打开: 打印(“在”) on=真 艾利夫: 打印(“关闭”) 开=假 如果未打开: 打印(

我正在做一个自动点击器,它可以用“e”来关闭和打开,但在“e”之后 它会打开,但不会关闭

我试过多次修改代码,但仍然找不到正确的答案 问题

导入pynput
从pynput.keyboard导入键代码,侦听器
从pynput.mouse导入按钮,控制器
导入时间
鼠标=控制器()
def onoff(按键代码,on=None):
rkey=str(键码).strip(“”)
如果rkey==“e”:
如果未打开:
打印(“在”)
on=真
艾利夫:
打印(“关闭”)
开=假
如果未打开:
打印(“不在屏幕上”)
艾利夫:
在职期间:
鼠标。点击(按钮。左)
睡眠时间(0.4)
将侦听器(on_press=onoff)设置为l:
l、 加入

我希望在按下“e”后它会关闭,但一直单击。

不太清楚您的意思,因为pynput中的
侦听器
是一个新的
线程。如果需要停止此线程,则线程中的while True任务将相应停止。它们都应该彼此分开。使用
.join()
方法关闭键盘侦听。在第二次按“e”并持续单击后,请尝试以下代码以查看是否需要此效果:

from pynput.keyboard import Listener
from pynput.mouse import Button, Controller
import time
import threading

mouse = Controller()


class Demo:
    def __init__(self):
        self.key_list = []
        self.c = threading.Thread(target=self.click)
        self.l = Listener(on_press=self.onoff)
        self.l.start()
        self.l.join()

    def click(self):
        while True:
            mouse.click(Button.left)
            time.sleep(0.4)

    def onoff(self, key):
        try:
            key_str = key.char
        except AttributeError:
            key_str = key.name

        if key_str == "e":
            if len(self.key_list) == 0:
                self.key_list.append(key_str)
                self.c.start()
            elif key_str in self.key_list:
                self.l.stop()
                print('Keyboard listen stopped')
                print('Mouse click continue')
                self.c.join()


Demo()


我以前没有使用过pynput,但是,难道它不会在“开启”时退出吗?