在 python 中创建一个基本的自动答题器

新手上路,请多包涵

我想创建一个非常简单的自动点击器,它将占据鼠标的位置,只要“活动”为真并以“输入”的速度(每秒点击次数)点击该位置

我看到这段代码四处飘荡,但它不符合我的需要

import win32api, win32con
def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
click(10,10)

我希望代码看起来像这样,

 import library

input = 5 ## in clicks per second

if (some key) is held:
    active = True

if (some key) is released:
    active = False

while active:
     *gets position of mouse*
     *clicks at that position at input's speed (5)

如果有一个选项可以在屏幕的正中央单击,那就太好了。

原文由 Jmilicev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 564
2 个回答

尝试使用 pyautogui 。我已经在几个项目中使用过它。它具有巨大的功能和更少的代码。例如,如果您想点击屏幕中间,只需执行以下操作:

 import pyautogui
width, height = pyautogui.size()
pyautogui.click(width/2, height/2)

在您的情况下,您可以使用时间模块来同步操作。

这是 pyautogui 的备忘单

原文由 arsho 发布,翻译遵循 CC BY-SA 4.0 许可协议

这可能不是您想要的,但它会在您按下并释放“s”时开始点击,并在您按下并释放“s”时停止点击。如果你想退出脚本,按’e’

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

delay = 0.001
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()

原文由 Hacker–Rohan Raj 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏