微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的代码在 Windows 终端中不起作用,但在其他终端中起作用? 蟒蛇

如何解决为什么我的代码在 Windows 终端中不起作用,但在其他终端中起作用? 蟒蛇

好的,所以我正在制作一个自动点击器,到目前为止一切都很好 - 有点。它在 PyCharm 终端和 IDLE 中完美运行,但是当双击 .py 文件时,它会按预期打开 windows 终端,但只单击一次。单击键盘上的任何键后,它会继续并在同一位置停止,然后我必须在再次启动之前单击键盘上的一个键,然后它会继续执行此操作。我使用 pyinstaller 转换为 exe,并且转换得很好,但是当我运行它时,它根本不起作用。请有人帮忙解决这个问题。

import time
mouse = Controller()

clicker_on_query = True
clicker_time_interval = 1

while clicker_on_query == True:
    print('loop activated')
    mouse.press(Button.left)
    mouse.release(Button.left)
    print('1')
    time.sleep(clicker_time_interval)
    print('loop end')

解决方法

经过一些测试,我意识到只有在命令提示符下运行脚本时才会发生这种情况,而使用 PowerShell 似乎根本没有问题。 您可以尝试使用这段代码,它使用类更高级,并具有开始/停止键,也许还可以进行更多实验。

顺便说一下,这似乎也适用于提示。

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


delay = 1.00
button = Button.left
start_stop_key = KeyCode(char='s')
exit_key = KeyCode(char='e')


class ClickMouse(threading.Thread):
    def __init__(self,delay,button):
        super(ClickMouse,self).__init__()
        self.delay = delay
        self.button = button
        self.running = False
        self.program_running = True

    def start_clicking(self):
        self.running = True

    def stop_clicking(self):
        self.running = False

    def exit(self):
        self.stop_clicking()
        self.program_running = False

    def run(self):
        while self.program_running:
            while self.running:
                mouse.click(self.button)
                time.sleep(self.delay)
            time.sleep(0.1)


mouse = Controller()
click_thread = ClickMouse(delay,button)
click_thread.start()


def on_press(key):
    if key == start_stop_key:
        if click_thread.running:
            click_thread.stop_clicking()
        else:
            click_thread.start_clicking()
    elif key == exit_key:
        click_thread.exit()
        listener.stop()


with Listener(on_press=on_press) as listener:
    listener.join()

代码积分:https://nitratine.net/blog/post/python-auto-clicker/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。