我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在Python中利用tkinter库实现投放鼠标模拟点击器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在Python中利用tkinter库实现投放鼠标模拟点击器

本篇文章为大家展示了怎么在Python中利用tkinter库实现投放鼠标模拟点击器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Python的优点有哪些

1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求没有那么严格;2、Python属于开源的,所有人都可以看到源代码,并且可以被移植在许多平台上使用;3、Python面向对象,能够支持面向过程编程,也支持面向对象编程;4、Python是一种解释性语言,Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序;5、Python功能强大,拥有的模块众多,基本能够实现所有的常见功能。

用Python做一个鼠标模拟点击器,可以实现多位置,定时,定次数,定区域随机位置点击,对于一些比较肝的游戏(痒痒鼠之类的),挂机非常有帮助,解放双手;定区域随机点击可以一定程度上防止系统检测出有使用脚本开挂的行为

import tkinter as tkimport randomimport pyautogui as mousefrom tkinter.messagebox import *

安装库

首先是今天要用到的几个必要的库:tkinter,random,pyautogui

没有安装tkinter库和pyautogui库可以按照一下操作:

打开CMD控制台,依次输入:

pip install -i https://pypi.mirrors.ustc.edu.cn/simple/ tkinter

pip install -i https://pypi.mirrors.ustc.edu.cn/simple/ pyautogui

在线安装,由于是使用的镜像源,应该下载比较快

interval_time=2 #点击时间间隔 (定时点击)number_of_clicks=1#单次点击次数(多次点击同一位置)target_quantity=1 #点击位置坐标数(点击不同的位置)windows=tk.Tk() #定义一个窗体,初始化var=tk.StringVar("")#定义一个标签文字,用于后面通过调用                               #刷新标签内容var.set(str)刷新标签内容

完整代码

注意这两行代码顺序:

windows=tk.Tk() #定义一个窗体,初始化

var=tk.StringVar("")#定义一个可变标签文字,用于后面通过调用

#var.set(str)刷新标签内容(str为一个字符串)

若在窗体初始化之前定义var,后面在调用var.set(str)时,程序会报错,无法通过编译,错误的大致含义就是var未初始化

width=400                     #定义窗体的宽和height=400                    #高,400*400个像素点(注:这里还未设置窗体#宽高)windows.title("自动点击器")    #窗体名称x=windows.winfo_screenwidth() #x和y用于获取显示器的宽和高,y=windows.winfo_screenheight()#主要用途是:通过计算把上面声明                              #的windows窗体放到屏幕中间

windows.winfo_screenwidth()和windows.winfo_screenheight()函数返回显示器宽和高(int 型)

windows.geometry("%dx%d+%d+%d" % (width, height, (x-width)/2,(y-height)/2)) #设置窗体宽高和位置

windows.geometry()函数一共四个参数,从左到右依次含义为:窗体宽,窗体高,窗体位置坐标x,窗体位置坐标y

windows.maxsize(width,height)  #约束窗体最大尺寸和最小尺寸相同,windows.minsize(width,height)   #达到目的窗体大小不可变

windows.maxsize(width,height) 和 windows.minsize(width,height) 依次含义为:约束窗体的最大尺寸和最小尺寸

mouse_position=[[0,0]]#定义并初始化一个链表,用于存储固定下来的鼠标的位置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

注:形如("%s%d%s"%(str1,int1,str2))的变量实际上的目的是将字符串str1,str2和整型变量int1合并成一个字符串,后面还会有大量这样的使用

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())#刷新当前设置内容信息

注:

①showinfo(title=‘提示', message=("%s%d%s"%(“置”,len(mouse_position),‘设置成功')))
以对话框的形式弹出,给用户提示,title(字符串)是对话框名字,message(字符串)是对话框文字内容

② showwarning(title=‘警告', message="%s%d%s%d%s"%(‘当前位置(',x,',',y,')\n可能会出现:自动点击时鼠标不在桌面'))
以对话框的形式弹出,给用户警告

③关键字global,将已经声明的变量前加上global再次声明的作用是:在当前函数内部对其值做出修改,并且函数返沪或结束时,其被改变的值不会恢复,(类似与C++的引用),
后面还有诸多函数内部用到global关键字

④mouse.position()返回的是一个二元组,即当前鼠标的坐标(x,y)

#功能函数,用于设置单次点击的次数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())

注:

mouse.click(mX,mY,button=‘left',clicks=number_of_clicks,interval=interval_time)

模拟鼠标在坐标(mX,mY)出点击,button指示点击左键还是右键,clicks指示点击次数,interval指示点击的时间间隔

mouse.moveTo(mX,mY)
移动鼠标到指定位置坐标(mX,mY)

#功能函数,设置点击范围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_times))     var.set(information())

start_setting_click_times(times)对于输入文本框的内容查错处理和上一个函数相同,不再做介绍

###                              主函数                 ####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_menu1.add_radiobutton(label=‘1',command=lambda :set_target_quantity(1))#设置菜单项的标签,绑定功能
command指的是功能函数,只能将无参函数直接用函数名赋值给command, 对于有参函数,需要以:command=lambda :有参函数(形参1,形参2…) 的形式赋值给command,不然无法正常触发功能函数

#创建第二个下拉单选菜单,与第一个操作一样   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='5次',command=lambda :set_number_of_clicks(5))
 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库实现投放鼠标模拟点击器
怎么在Python中利用tkinter库实现投放鼠标模拟点击器
怎么在Python中利用tkinter库实现投放鼠标模拟点击器

上述内容就是怎么在Python中利用tkinter库实现投放鼠标模拟点击器,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在Python中利用tkinter库实现投放鼠标模拟点击器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在Python中利用tkinter库实现投放鼠标模拟点击器

本篇文章为大家展示了怎么在Python中利用tkinter库实现投放鼠标模拟点击器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等
2023-06-14

Python实战之用tkinter库做一个鼠标模拟点击器

前言 用Python做一个鼠标模拟点击器,可以实现多位置,定时,定次数,定区域随机位置点击,对于一些比较肝的游戏(痒痒鼠之类的),挂机非常有帮助,解放双手;定区域随机点击可以一定程度上防止系统检测出有使用脚本开挂的行为import tkin
2022-06-02

怎么在pyqt5中利用ComboBox实现一个鼠标点击触发事件

怎么在pyqt5中利用ComboBox实现一个鼠标点击触发事件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、自定义MyComboBox# MyComboBox.pyfr
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录