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

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)"))










没有回复内容