Python定时点击桌面程序,可修改点击间隔
Posted 狂奔小蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python定时点击桌面程序,可修改点击间隔相关的知识,希望对你有一定的参考价值。
import pyautogui import tkinter as tk class Clicker: def __init__(self): self.root = tk.Tk() self.root.title("桌面点击程序") self.root.geometry("300x150") self.interval = tk.StringVar() self.interval.set("10") self.interval_label = tk.Label(self.root, text="间隔时间(秒):") self.interval_label.grid(row=0, column=0) self.interval_entry = tk.Entry(self.root, textvariable=self.interval) self.interval_entry.grid(row=0, column=1) self.start_button = tk.Button(self.root, text="开始", command=self.start_clicking) self.start_button.grid(row=1, column=0) self.stop_button = tk.Button(self.root, text="停止", command=self.stop_clicking, state=tk.DISABLED) self.stop_button.grid(row=1, column=1) self.root.mainloop() def start_clicking(self): self.start_button.config(state=tk.DISABLED) self.stop_button.config(state=tk.NORMAL) self.interval_entry.config(state=tk.DISABLED) self.clicking = True self.click() def stop_clicking(self): self.clicking = False self.start_button.config(state=tk.NORMAL) self.stop_button.config(state=tk.DISABLED) self.interval_entry.config(state=tk.NORMAL) def click(self): if self.clicking: pyautogui.click(pyautogui.size()[0]/2, pyautogui.size()[1]/2) #print("已点击", pyautogui.position()) self.root.after(int(self.interval.get()) * 1000, self.click) Clicker()
节流--自己写的函数
今天老师讲的节流, 大概意思是点击间隔时间必须三秒钟以上,三秒内的连续点击无效.
大体思路: 设定两个锁, 一个对应点击的触发函数fn, 一个对应定时器,防止定时器每次点击都会设定造成多个定时器篡改函数锁.
细节上就是把锁最好定为函数的属性,这样都对应一个.还有处理好this 和 e的问题.
我感觉老是的思路是获取时间间隔, 老是的思路比较直观. 定义一个两个变量, 每次点击记录时间点, 如果下次点击和这次间隔时间不符合时间间隔, 会不执行.
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>Document</title> 9 </head> 10 11 <body> 12 <span id=‘demo‘> 13 1111 14 </span> 15 16 <script> 17 18 //点了后一秒钟之内不能再点击. 19 function jieLiu(fn, time) { 20 jieLiu.flag = true; 21 jieLiu.TimeoutFlag = true; 22 return function (e) { 23 var that = this; 24 var arg = Array.prototype.slice.call(arguments,0); 25 if (jieLiu.flag) { 26 jieLiu.flag = false; 27 fn.apply(that,arg); 28 } 29 if (jieLiu.TimeoutFlag) { //定时器flag, 防止每次点击开启一个定时器. 刚开始我没用这个,点击第二次后达不到预期效果 30 jieLiu.TimeoutFlag = false; 31 setTimeout(function () { 32 jieLiu.flag = true; 33 jieLiu.TimeoutFlag = true; 34 }, time) 35 } 36 } 37 } 38 39 var jl = jieLiu(function (e) { console.log(this,e.target) }, 3000); 40 demo.onclick = jl; 41 </script> 42 </body> 43 44 </html>
function jieLiu(fn, time) { var lastTime = 0; return function (e) { var nowTime = new Date().getTime(); var that = this; if (nowTime - lastTime > time) { lastTime = nowTime; var arg = Array.prototype.slice.call(arguments, 0); fn.apply(that, arg); } } }
以上是关于Python定时点击桌面程序,可修改点击间隔的主要内容,如果未能解决你的问题,请参考以下文章