Python 실전 은 tkinter 라 이브 러 리 로 마우스 시 뮬 레이 터 를 만 듭 니 다.

머리말
Python 으로 마우스 시 뮬 레이 션 클릭 기 를 만 들 면 여러 위치,시간,횟수 를 정 하고 지역 의 무 작위 위 치 를 정 하여 클릭 할 수 있 습 니 다.간 을 가 려 운 쥐 같은 게임(가 려 운 쥐 같은 것)에 있어 서 자동 사냥 이 매우 도움 이 되 고 두 손 을 해방 시 킬 수 있 습 니 다.영역 을 정 하고 무 작위 로 클릭 하면 스 크 립 트 를 사용 하여 끊 는 행위 가 어느 정도 감지 되 는 것 을 방지 할 수 있 습 니 다.

import tkinter as tk
import random
import pyautogui as mouse
from 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.winfoscreenheight()함수 가 모니터 너비 와 높이(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," 
:",interval_time,"s :",total_number_of_times,"
:",click_range," ") return k
주:예 를 들 어("%s%d%s"%(str1,int1,str2)의 변 수 는 실제 적 으로 문자열 str 1,str 2 와 전체 변수 int 1 을 하나의 문자열 로 합 치 는 것 이 목적 입 니 다.그 다음 에 도 이러한 사용 이 많 습 니 다.

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,')
: ')) mouse_position.append([x,y]) showinfo(title=' ', message=("%s%d%s"%(" ",len(mouse_position),' '))) var.set(information())#
주:
① show info(title='알림',message=('%s%d%s'%s)%('설치',len(mouse위치),'설정 성공'))))
대화 상자 형식 으로 팝 업 하여 사용자 에 게 알림 을 줍 니 다.title(문자열)은 대화 상자 이름 이 고 message(문자열)는 대화 상자 텍스트 내용 입 니 다.
② showwarning(title='경고',message='%s%d%s%d%s'%('현재 위치(',x',',',y')가 나타 날 수 있 습 니 다.자동 클릭 시 마우스 가 데스크 톱 에 없 음')
대화 상자 형식 으로 팝 업 하여 사용자 에 게 경고 합 니 다.
③ 키워드 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"%('        
',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 은 왼쪽 단 추 를 누 르 든 오른쪽 단 추 를 누 르 든 클릭 횟수 를 표시 합 니 다.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"%('    :
',ti,'
')) 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"%('    :
',ti,'
')) 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):
( )",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()
효과 도
主界面
警告对话框1
提示对话框1
파 이 썬 실전 용 tkinter 라 이브 러 리 에 마우스 시 뮬 레이 션 클릭 기 를 만 드 는 글 을 소개 합 니 다.더 많은 파 이 썬 tkinter 라 이브 러 리 마우스 시 뮬 레이 션 클릭 기 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 관심 부탁드립니다!

좋은 웹페이지 즐겨찾기