资讯详情

python用pyautogui和tkinter模块实现连点器

学习网站来自大佬发的。csdn用Python的tkinter制作鼠标模拟点击器_searching learner的博客-CSDN博客_python随机点击鼠标

import tkinter as tk import random import pyautogui as mouse from tkinter.messagebox import *  interval_time=2 #点击时间间隔 (定时点击) number_of_clicks=1#单次点击次数(多次点击同一位置) target_quantity=1 #点击位置坐标数(点击不同的位置) windows=tk.Tk() #定义窗体,初始化 var=tk.StringVar("")#定义标签文字,以后用于调用                                #刷新标签内容var.set(str)刷新标签内容 width=400                     #定义窗体的宽和 height=400                    #高,400*400个像素点(注:窗体#宽高尚未设置在这里) windows.title("自动点击器")    #窗体名称 x=windows.winfo_screenwidth() #x和y用于获取显示器的宽度和高度, y=windows.winfo_screenheight()#主要用途是计算上述声明                               #的windows窗体放在屏幕中间 mouse_position=定义并初始化一个链表,存储固定鼠标的位置 mouse_position.clear()#清空链表(清空初始化元素[0,0]) total_number_of_times=100#定义最大点击次数 start_set=False#定义一个标志,用于判断是否已开始自动点击 click_range=1#定义点击范围(以当前鼠标坐标为中心,扩展边长为2倍click_range平面正方形区域)单位为像素点  #函数information()返回字符串,包含当前设置状态的信息 def information():     k="%s%d%s%d%s%d%s%d%s%d%s"%("目标数:",target_quantity,"个  单次点击:",number_of_clicks,"次\n点击时间间隔:",interval_time,"s  次数总上限:",total_number_of_times,"次\n点击范围:",click_range,"像素点")     return k var.set(information()#刷新标签内容var  #用于设置点击位置的鼠标坐标 def set_one_mouse_position(event):     global  mouse_position#引用全局变量mouse_position     #做出判断,鼠标坐标是否已达到设定的最大值,如未达到最大值,添加#添加鼠标坐标到mouse_position链表     if start_set==True and len(mouse_position)<target_quantity:          x=mouse.position().x#获取当前鼠标位置的x坐标          y=mouse.position().y#获取当前鼠标位置的y坐标          ##判断设定的鼠标位置,叠加点击范围的属性是否可能超过屏幕范围,并在设置后提醒或警告          if x-click_range<0 or y-click_range<0:          #鼠标位置可能超过屏幕范围,给出警告               showwarning(title='警告', message="%s%d%s%d%s"()x,',',y,')\n可能会出现:自动点击时鼠标不在桌面'))          mouse_position.append([x,y])          showinfo(title='提示', message=("%s%d%s"%("位置",len(mouse_position),'设置成功')))     var.set(information()#刷新当前设置的内容信息   #功能函数,设置单次点击次数 def set_number_of_clicks(num):     global number_of_clicks     number_of_clicks=num     var.set(information())  #功能函数,设置点击时间间隔 def set_interval_time(time):    global interval_time    interval_time=time    var.set(information())  #功能函数,设置点击位置的数量 def set_target_quantity(num):     global target_quantity     target_quantity=num     var.set(information())  #功能函数,开始自动点击 def start_setting_coordinates():     global start_set,mouse_position,windows     #当start_set==False并且mouse_position当链表中的元素数未达到最大值时,继续固定鼠标坐标     if  start_set==False and len(mouse_position)<target_quantity:         start_set=True         showinfo(title='提示', message="%s%d%s"(%)开始设置鼠标坐标\n一共需要设置,target_quantity,"个位置"))              #当start_set==True并且mouse_position当链表中的元素数达到最大值时,开始自动点击     elif start_set==True and len(mouse_position)>=target_quantity:         showinfo(title='提示', message=设置鼠标位置,开始自动点击')         nim=0         while nim<total_number_of_times:             for i in range(len(mouse_position)):                   点击位置坐标以鼠标准确位置为中心                 mX=random.randint(mouse_position[i][0]-click_range,mouse_position[i][0] click_range)                 mY=random.randint(mouse_position[i][1]-click_range,mouse_position[i][1] click_range)                 mouse.click(mX,mY,button='left',clicks=number_of_clicks,interval=interval_time)  #模拟移动鼠标                 mouse.moveTo(mX,mY)                 nim=nim 1         showinfo(title='提示', message="%s%d%s"%('点击次数达到上限',total_number_of_times,点击结束              #点击次数最多,点击结束,清空鼠标位置链表内容,改变标志变量和当前设置信息         mouse_position.clear()         start_set=False         var.set(information())  #功能函数,设置点击范围 def start_setting_click_range(rangs):      global click_range      ti=rangs.get()#获取rangs本框内容(字符串)      ##理输入内容的错误      #当字符串为空时,设置点击范围click_range为0      if len(ti)==0:          click_range=0          showwarning(title='警告', message=输入内容为空,默认值为0')          return         #当字符串不空时,检查每个字符是否为数字ascall码      for j in range(len(ti)):          if ti[j]>'9' or ti[j]<'0':              showerror(title='错误', message="%s%s%s"%('输入内容:\n',ti,'\n含有非法字符的)              return       #只有数字将通过上面检查ascall如果整数大于0,则代码字符串转换为整数,更新点击范围为此值      ti=int(ti)      if ti>0:          click_range=ti          showinfo(title='提示', message="%s%d"设置成功,点击范围为:click_range))      var.set(information())  #功能函数,设置点击总次数 def start_setting_click_times(times):      global total_number_of_times      ti=times.get()      if len(ti)==0:          total_number_of_times=100          showwarning(title='警告', message=输入内容为空,当前点击次数为默认值:100')          return      for j in range(len(ti)):          if ti[j]>'9' or ti[j]<'0':              showerror(title='错误', message="%s%s%s"%('输入内容:\n',ti,'\n含有非法字符的)              return      ti=int(ti)      if ti>0:          total_number_of_times=ti          showinfo(title='提示', message="%s%d"设置成功,点击总次数为:total_number_of_imes))
     var.set(information())

###                              主函数                 ####
def main():
#初始化设置总菜单条,将菜单放在windows窗体上
   menu_slect_num=tk.Menu(windows)
#声明第一个下拉单选菜单,将其放在总菜单条上
   file_menu1=tk.Menu(menu_slect_num,tearoff=0)
#设置第一个下拉菜单的菜单封面(封面标签)
   menu_slect_num.add_cascade(label='目标数',menu=file_menu1)
   #添加可选菜单项
   file_menu1.add_radiobutton(label='1',command=lambda :set_target_quantity(1))#设置菜单项的标签,绑定功能
   file_menu1.add_separator()#添加菜单项之间的分割线
   ##后面继续添加菜单项,绑定功能
   file_menu1.add_radiobutton(label='2',command=lambda :set_target_quantity(2))
   file_menu1.add_separator()
   file_menu1.add_radiobutton(label='3',command=lambda :set_target_quantity(3))
   file_menu1.add_separator()
   file_menu1.add_radiobutton(label='4',command=lambda :set_target_quantity(4))
   file_menu1.add_separator()
   file_menu1.add_radiobutton(label='5',command=lambda :set_target_quantity(5))
#创建第二个下拉单选菜单,与第一个操作一样
   file_menu2=tk.Menu(menu_slect_num,tearoff=0)
   menu_slect_num.add_cascade(label='时间间隔',menu=file_menu2)
   file_menu2.add_radiobutton(label='0.01s',command=lambda :set_interval_time(0.01))
   file_menu2.add_separator()
   file_menu2.add_radiobutton(label='0.05s',command=lambda :set_interval_time(0.05))
   file_menu2.add_separator()
   file_menu2.add_radiobutton(label='0.1s',command=lambda :set_interval_time(0.1))
   file_menu2.add_separator()
   file_menu2.add_radiobutton(label='0.5s',command=lambda :set_interval_time(0.5))
   file_menu2.add_separator()
   file_menu2.add_radiobutton(label='1s',command=lambda :set_interval_time(1))
   file_menu2.add_separator()
   file_menu2.add_radiobutton(label='2s',command=lambda :set_interval_time(2))
   file_menu2.add_separator()
   file_menu2.add_radiobutton(label='5s',command=lambda :set_interval_time(5))
   file_menu2.add_separator()
   file_menu2.add_radiobutton(label='10s',command=lambda :set_interval_time(10))
#创建第三个下拉单选菜单,绑定功能,和上面的操作一样
   file_menu3=tk.Menu(menu_slect_num,tearoff=0)
   menu_slect_num.add_cascade(label='单次点击数',menu=file_menu3)
   file_menu3.add_radiobutton(label='1次',command=lambda :set_number_of_clicks(1))
   file_menu3.add_separator()
   file_menu3.add_radiobutton(label='2次',command=lambda :set_number_of_clicks(2))
   file_menu3.add_separator()
   file_menu3.add_radiobutton(label='3次',command=lambda :set_number_of_clicks(3))
   file_menu3.add_separator()
   file_menu3.add_radiobutton(label='4次',command=lambda :set_number_of_clicks(4))
   file_menu3.add_separator()
   file_menu3.add_radiobutton(label='1000次',command=lambda :set_number_of_clicks(1000))


   windows.config(menu=menu_slect_num)  # 将菜单添加到窗体上
# 添加标签和按钮
# 定义标签对象,设置目标窗体,标签文本(text),背景颜色(bg),前景颜色(fg),字体(font),以及宽(width),高(height)
   lb1 = tk.Label(windows, text="按Shift-A固定鼠标或者退出自动点击", bg='black', fg='white', font=('Arial', 12), width=40, height=2)
   lb2 = tk.Label(windows, text="设置点击范围(像素点,默认为0):\n(以设置的鼠标坐标为中心展开)", bg='black', fg='white', font=('Arial', 12), width=40,
               height=2)
   lb3 = tk.Label(windows, text="总点击次数(默认为100):", bg='black', fg='white', font=('Arial', 12), width=40, height=2)
   lb4 = tk.Label(windows, textvariable=var, bg='green', fg='black', font=('Arial', 12), width=40, height=3)


# 定义按钮对象,设置按钮名称,绑定功能函数
   b1 = tk.Button(windows, text="first_click", command=start_setting_coordinates)
   rang = tk.Entry(windows, show=None, font=('Arial', 14))
   b2 = tk.Button(windows, text="second_click", command=lambda: start_setting_click_range(rang))
   b3 = tk.Button(windows, text="third_click", command=lambda: start_setting_click_times(timi))
# 定义文本框,指定目标窗体,设置输入的文本为可见(show=None),设置文本字体font
   timi = tk.Entry(windows, show=None, font=('Arial', 14))

# 放置按钮和标签
   lb4.pack()
   lb1.pack()
   b1.pack()
   lb2.pack()
   rang.pack()
   b2.pack()
   lb3.pack()
   timi.pack()
   b3.pack()
#为窗体绑定键盘监听器,当按下组合键(Shift-A),触发功能函数set_one_mouse_position
   windows.bind("<Shift-a>",set_one_mouse_position)
   windows.mainloop()#使窗体内容不断刷新
main()



仅供学习参考,原创来源:用Python的tkinter库做一个鼠标模拟点击器_searching learner的博客-CSDN博客_python鼠标随机点击

如有侵权私信联系,我只是转载者。

标签: 连接器tk10

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司