Python 실전 은 tkinter 라 이브 러 리 로 마우스 시 뮬 레이 터 를 만 듭 니 다.
                                            
 14714 단어  Pythontkinter마우스 시 뮬 레이 터
                    
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()효과 도
 
 
 파 이 썬 실전 용 tkinter 라 이브 러 리 에 마우스 시 뮬 레이 션 클릭 기 를 만 드 는 글 을 소개 합 니 다.더 많은 파 이 썬 tkinter 라 이브 러 리 마우스 시 뮬 레이 션 클릭 기 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 관심 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.