亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Python實戰之用tkinter庫做一個鼠標模擬點擊器

瀏覽:3日期:2022-06-21 08:13:40
前言

用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庫做一個鼠標模擬點擊器的文章就介紹到這了,更多相關Python tkinter庫鼠標模擬點擊器內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 黄页视频在线观看免费 | 日本一级毛片冲田杏梨 | 性短视频在线观看免费不卡流畅 | 91精品国产免费久久久久久青草 | 你懂的免费在线 | 国产青草视频在线观看 | 久久精品成人欧美大片免费 | 免费高清在线影片一区 | 国产精品人成福利视频 | 国产高清不卡一区二区 | 免费a级 | 免费精品在线视频 | 九九视频九九热 | 色综合图| 农村寡妇一级毛片免费播放 | 嘿嘿视频在线观看 | 8050午夜一级全黄毛片 | 日韩一区二区不卡中文字幕 | 国产一区二区三区四区五区tv | 欧美中文字幕 | 视频久久精品 | 看一级特黄a大片日本片黑人 | 欧美一二区视频 | 在线免费观看黄色网址 | 黑人爱爱视频 | 久久婷婷激情综合色综合也去 | 免费日本一区 | 国产精品亚洲综合一区在线观看 | 中文字幕中出在线 | 香港三级理论在线观看网站 | 成人免费在线视频观看 | 黄色在线免费网站 | 欧美区一区 | 国产下药迷倒白嫩美女网站 | 国产一区二区视频在线观看 | 天堂影院jav成人天堂免费观看 | 成人免费久久精品国产片久久影院 | 在线日韩观看 | 亚洲精品欧洲一区二区三区 | 一区二区三区在线观看免费 | 成人精品视频网站 |