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에 따라 라이센스가 부여됩니다.