教你写页游自动化Python脚本,取色,大漠识别和后台点击

这篇教程介绍了如何使用Python进行页游自动化,包括使用tkinter创建界面,通过游戏窗口标题识别,结合大漠插件进行图像识别和后台点击。内容涵盖线程控制、事件驱动、游戏操作模拟及大漠插件的使用方法。
摘要由CSDN通过智能技术生成

本教程为新手学习python教程
废话少说,下面开始python教程
我们先用tkinter搭建好脚本的基本界面

教你写页游自动化Python脚本,取色,大漠识别和后台点击

私信小编01即可获取大量Python学习资源

import tkinter as tk#[size=3]首先导入tkinter,需要事先用pip安装进python里(方法自行百度)
[/size] def init_window():    
global cs,wd    
wd = tk.Tk()    
cs = tk.Canvas(wd,                   
width = 800,                   
height = 500,                   
bg = 'white')    
wd.minsize(800, 500)   
# 最小尺寸    
wd.maxsize(800, 500)
#最大尺寸,使最大化失效    
wd.title('DDTHelper')    
pic = tk.PhotoImage(file="pic.png")
#设置背景图片,最好是800*500和png格式的    
cs.create_image(400,250,image = pic)    
cs.pack()    
bt = tk.Button(wd,                   
text='初始化',                   
bg=('white'),                   
font=('微软雅黑',20),                   
width=155,                   
height=48,                   
command=BT_onCreat)    
bt.pack()    
cs.create_window(530,70,                     
width=155,                     
height=48,                     
window=bt)    
wd.mainloop()def BT_onCreat():    
print("初始化。。。")
#入口,这行代码需要一直都待在脚本的最底下
#设置字典hwnd_title = dict()init_window()

(不过在图片上叠加控件其实有更好的方案,使控件的背景为透明的,但是那篇文章的代码运行不来)
运行效果

教你写页游自动化Python脚本,取色,大漠识别和后台点击

现在我们为点击 初始化 按钮添加一些事项
让他在被点击的时候识别当前的游戏窗口
(因为我用的是36jb大厅登录的游戏,抓取句柄的时候可以根据他的title来区别游戏窗口)
这里我偷了个懒,利用该登录器游戏窗口的title来获取.最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

教你写页游自动化Python脚本,取色,大漠识别和后台点击

更改上面的导入库和 BT_onCreat()方法

import win32com.client as wc,win32gui as wg,threading as xc,
time,tkinter as tk,win32api as wa,win32con as wn
#需要事先用pip安装pywin32插件进python里(方法自行百度) 
def init_window():    
global cs,wd    
wd = tk.Tk()    
cs = tk.Canvas(wd,                   
width = 800,                   
height = 500,                   
bg = 'white')    
wd.minsize(800, 500)   
# 最小尺寸    
wd.maxsize(800, 500)
#最大尺寸,使最大化失效    
wd.title('DDTHelper')    
pic = tk.PhotoImage(file="pic.png")
#设置背景图片,最好是800*500和png格式的    
cs.create_image(400,250,image = pic)    
cs.pack()    
bt = tk.Button(wd,                   
text='初始化',                   
bg=('white'),                   
font=('微软雅黑',20),                   
width=155,                   
height=48,                   
command=BT_onCreat)    
bt.pack()    
cs.create_window(530,70,                     
width=155,                     
height=48,                    
window=bt)    
wd.mainloop()def BT_onCreat():    
global is_run,Znum,t1,t2,t3    
Znum = 0
#当前已经登陆的游戏账号数量   
wg.EnumWindows(get_all_hwnd, 0)    
for h,t in hwnd_title.items():        
if "4399" in t:
#根据title里包含的 4399 来提取游戏窗口            
hwnd = t.split("|")[3]            
name = t.split("|")[2]            
print("账号:" + name + "句柄:" + hwnd)            
Znum = Znum + 1            
hwnd = int(hwnd)
#将句柄转化为int,因为句柄是从标题获取的string,导致了类型错误,我就是被这个坑了好久。。            
if Znum==1:
#为每一个游戏界面创建一个单独的操作线程,为了方便用global传递,没有用exec。                
t1 = xc.Thread(target=Con,args=(hwnd,name,Znum))            
elif Znum==2:                
t2 = xc.Thread(target=Con,args=(hwnd,name,Znum))            
elif Znum==3:                
t3 = xc.Thread(target=Con,args=(hwnd,name,Znum))            
init_control(Znum,name)
#下面再添加几个方法进去
#获取句柄用的def get_all_hwnd(hwnd,mouse):    
if wg.IsWindow(hwnd) and wg.IsWindowEnabled(hwnd) 
and wg.IsWindowVisible(hwnd):        
hwnd_title.update({hwnd:wg.GetWindowText(hwnd)})
#为每一个线程创建一个对应的控件来控制线程的运行
def init_control(Znum,name):    
global cs,wd,v1,v2,v3,tx1,t2,tx2,t3,tx3,txn1,txn2,txn3    
if Znum==1:       
v1=tk.IntVar()        
tx1=tk.StringVar()        
txn1=tk.StringVar()    
elif Znum==2:       
v2=tk.IntVar()        
tx2=tk.StringVar()        
txn2=tk.StringVar()    
elif Znum==3:        
v3=tk.IntVar()        
tx3=tk.StringVar()        
txn3=tk.StringVar()    
exec('tx{}.set("未运行")'.format(Znum))     
exec('lb{} = tk.Label(wd,text="{}",bg=("#ffffff"),
font=("微软雅黑",20))'.format(Znum,name))    
exec('lbn{} = tk.Label(wd,textvariable=txn{},
bg=("#ffffff"),font=("微软雅黑",10))'
.format(Znum,Znum))    
exec('cb{} = tk.Checkbutton(wd,textvariable=tx{},
bg=("#ffffff"),font=("微软雅黑",10),variable = v{}, 
height=5,width = 0,command=BT_onRun{})'
.format(Znum,Znum,Znum,Znum))    
exec('cb{}.pack()'.format(Znum))    
exec('lb{}.pack()'
.format(Znum))    
exec('lbn{}.pack()'.format(Znum))    
Ytmp=Znum*100    
Ytmp=Ytmp+70    
exec('cs.create_window(630,{},width=0,height=0,window=lb{})&
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值