鼠标自动点击程序Python源码 - 开源项目社圈 - 综合分享 - 道言分享网

鼠标自动点击程序Python源码

有时参加活动要点连续点击按钮,为了减轻手指压力,开发了此款软件,界面是用PYQT5做,打包前要安装好Pyqt5,具体功能得用法看界面即可。

程序截图

20251118091246763-image

import datetime
import sys
 
from PyQt5.QtCore import pyqtSignal
from system_hotkey import SystemHotkey
from PyQt5.QtGui import QIcon
from pymouse import PyMouse  # 调用Pymouse模块
 
import time  # 调用时间模块(考略到网站点击延时)
from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar
 
from resource.mainwindows import Ui_MainWindow
import threading
 
 
class WindowPane(QMainWindow, Ui_MainWindow):
    sig_keyhot = pyqtSignal(str)
    addstatusbar = pyqtSignal(str)
 
    def __init__(self, parent=None, *args, **kwargs):
        super().__init__()
        self.setupUi(self)
        # 2. 设置我们的自定义热键响应函数
        self.sig_keyhot.connect(self.MKey_pressEvent)
        # 3. 初始化两个热键
        self.hk_start, self.hk_stop, self.hk_coords = SystemHotkey(), SystemHotkey(), SystemHotkey()
        # 4. 绑定快捷键和对应的信号发送函数
        self.hk_start.register(('control', 'f7'), callback=lambda x: self.send_key_event("start"))
        self.hk_stop.register(('control', 'f8'), callback=lambda x: self.send_key_event("stop"))
        self.hk_coords.register(('control', 'f9'), callback=lambda x: self.send_key_event("coords"))
 
        self.thread_stop = threading.Event()
        if self.thread_stop.isSet():
            self.thread_stop.clear()
        self.thread_running = False
        self.stopButton = False
        self.beginTime = None
        self.addstatusbar.connect(self.showMessage)
 
    # 热键处理函数
    def MKey_pressEvent(self, i_str):
        if i_str == 'start':
            self.startClick()
        if i_str == 'stop':
            self.stopClick()
        if i_str == 'coords':
            self.getCoords()
 
    # 热键信号发送函数(将外部信号,转化成qt信号)
    def send_key_event(self, i_str):
        self.sig_keyhot.emit(i_str)
 
    def getCoords(self):
        m = PyMouse()
        self.spinBox.setValue(m.position()[0])
        self.spinBox_2.setValue(m.position()[1])
 
    def startClick(self):
        try:
            self.beginTime = datetime.datetime.now()
            if not self.thread_running:
                ts = threading.Thread(target=self.thread_start, args=(), daemon=True)
                ts.start()
                self.thread_running = True
        except Exception as e:
            print(e)
 
    def stopClick(self):
        self.stopButton = True
 
    def showMessage(self, text):
        self.statusbar.showMessage(text)
 
    def thread_start(self):
        try:
            m = PyMouse()
            startTime = time.clock()
            timeCheck = True
            clickNum = 0
            while not self.stopButton and timeCheck:
                # m.move(self.spinBox.value(), self.spinBox_2.value())  # 鼠标移动坐标(x,y)
                m.click(self.spinBox.value(), self.spinBox_2.value())  # 鼠标点击坐标(x,y)
                clickNum += 1
                if self.spinBox_4.value():
                    time.sleep(self.spinBox_4.value() / 1000)
                else:
                    time.sleep(0.05)
                if self.spinBox_3.value():
                    timeCheck = (startTime + self.spinBox_3.value()) > float(time.clock())
                self.addstatusbar.emit(
                    '运行时间' + str(
                        (datetime.datetime.now() - self.beginTime).seconds) + '秒' + '      点击' + str(clickNum) + '次')
            self.stopButton = False
            self.thread_running = False
        except Exception as e:
            print(e)
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    MainWindow = WindowPane()
    MainWindow.show()
    desk = QApplication.desktop()
    rect = desk.availableGeometry()
    sys.exit(app.exec_())

在代码文件夹中新建Resource目录,并新建Pyqt界面代码文件mainwindows.py,代码如下

# -*- coding: utf-8 -*-
 
# Form implementation generated from reading ui file 'mainwindows.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
 
 
from PyQt5 import QtCore, QtGui, QtWidgets
 
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(251, 153)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName("verticalLayout")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setObjectName("widget")
        self.gridLayout = QtWidgets.QGridLayout(self.widget)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtWidgets.QLabel(self.widget)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.spinBox = QtWidgets.QSpinBox(self.widget)
        self.spinBox.setMaximum(9999)
        self.spinBox.setObjectName("spinBox")
        self.gridLayout.addWidget(self.spinBox, 0, 1, 1, 1)
        self.pushButton = QtWidgets.QPushButton(self.widget)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 0, 2, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.widget)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.spinBox_2 = QtWidgets.QSpinBox(self.widget)
        self.spinBox_2.setMaximum(9999)
        self.spinBox_2.setObjectName("spinBox_2")
        self.gridLayout.addWidget(self.spinBox_2, 1, 1, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 1, 2, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.widget)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
        self.spinBox_3 = QtWidgets.QSpinBox(self.widget)
        self.spinBox_3.setMaximum(9999999)
        self.spinBox_3.setObjectName("spinBox_3")
        self.gridLayout.addWidget(self.spinBox_3, 2, 1, 1, 1)
        self.label_4 = QtWidgets.QLabel(self.widget)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
        self.spinBox_4 = QtWidgets.QSpinBox(self.widget)
        self.spinBox_4.setMaximum(99999)
        self.spinBox_4.setObjectName("spinBox_4")
        self.gridLayout.addWidget(self.spinBox_4, 3, 1, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(self.widget)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout.addWidget(self.pushButton_3, 2, 2, 1, 1)
        self.verticalLayout.addWidget(self.widget)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 251, 18))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(MainWindow)
        self.pushButton.clicked.connect(MainWindow.startClick)
        self.pushButton_2.clicked.connect(MainWindow.stopClick)
        self.pushButton_3.clicked.connect(MainWindow.getCoords)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MouseAutoClick"))
        self.label.setText(_translate("MainWindow", "X坐标"))
        self.pushButton.setText(_translate("MainWindow", "开始(Ctrl+F7)"))
        self.label_2.setText(_translate("MainWindow", "Y坐标"))
        self.pushButton_2.setText(_translate("MainWindow", "停止(Ctrl+F8)"))
        self.label_3.setText(_translate("MainWindow", "持续点击时间(s)"))
        self.label_4.setText(_translate("MainWindow", "点击间隔(ms)"))
        self.pushButton_3.setText(_translate("MainWindow", "坐标获取(Ctrl+F9)"))
请登录后发表评论

    没有回复内容