目录
一、导读
当你觉得繁琐的填表工作很占用你的时间且麻烦,那么这篇文章或许能给你一些帮助。本文是基于Python的pyautogui模块实现的,该库能够帮助你实现自动化操作。首先在这推荐一篇文章:pyautogui库的使用教程(超详细)_QQVQQ...的博客-CSDN博客 ,上面有很详细的pyautogui库使用方法。此外,如果你想更详细地了解pyautogui库,可以选择访问其官方文档:Welcome to PyAutoGUI’s documentation! — PyAutoGUI documentation 以获取更多内容。
二、导入Python模块
pyautogui模块是本文章最核心的部分,基于该模块可以进行“图像识别——获取图像在屏幕上的位置——自动点击该位置——自动输入内容”这一基本操作,基于本操作可以实现自动化填表或其他功能。
pyperclip模块可以对字符串进行复制粘贴,用于输入中文内容。由于pyautogui库只能模拟键盘的输入,无法做到直接输入中文,因此需要该库辅助输入中文内容。
time模块可以进行时间相关的处理,本文只使用其time.sleep()方法。由于电脑在自动点击后可能需要一段时间的反应,如果在点击后立刻识别图像可能会识别失败,因此让程序在点击后等待一段时间是必要的。这就是该模块在本文中的作用。
pandas模块是实现数据分析的模块,本文用该模块实现从Excel中读取需要录入的人员数据。
tkinter模块用于图形化界面设计,创建GUI,在这也推荐一个tkinter教程:Python-Tkinter图形化界面设计(详细教程 )_tkinter界面设计_王张飞的博客-CSDN博客
threading模块用于多线程编程,没有该模块会让程序的窗口无响应。
import pyautogui
import pyperclip
import time
import pandas
from tkinter import *
import threading
这些模块可以用pip安装(pip install 库名)。如果你用的是pycharm,也可以用pycharm下载(File - Settings - Project:untitled - Poject Interpreter - "+" - 搜索库名)。此外,如果你用pip安装成功但是无法在pycharm中安装使用,可以参考该文章。我就是这种情况,亲测可用(笑记(解决方法)PyCharm无法安装库_pycharm安装库失败_Leslie-Lin的博客-CSDN博客
三、大华云联自动填表程序的各部分代码及功能
1.创建GUI(图形用户界面)应用程序
# 设置窗口
root = Tk() # 创建一个窗口
root.title('大华云联数据批量处理') # 标题
root.geometry('600x1000') # 窗口大小
# 设置按钮
log1 = Button(root, text='打开程序并检测登录状态', command=login) # text是按钮上显示的文字,command后接按钮对应的函数
log1.place(relx=0.1, rely=0.035, relwidth=0.4, relheight=0.05) # relx和rely控制按钮位置,relwidth和relheight控制按钮大小
log2 = Button(root, text='我已登录!', command=logor)
log2.place(relx=0.6, rely=0.035, relwidth=0.3, relheight=0.05)
# 设置提示文本框
txt1 = Text(root) # 在root窗口上的文本提示框
txt1.place(rely=0.125, relheight=0.1) # 放置提示框,rely控制位置,relheight控制大小
txt2 = Text(root)
pyautogui.PAUSE = 1 # 每次完成指令后会暂停1s
pyautogui.FAILSAFE = True # 鼠标移到左上角会产生pyautogui.FailSafeException异常
root.mainloop()
Tk()创建窗口,title()设置窗口标题,geometry()设置窗口大小。
Button()用于创建按钮,参数含义已在后面标出。其中的command为按钮对应的函数,点击按钮就会执行该函数。place()放置按钮,参数控制其大小和位置。
Text()创建文本提示框,place()放置文本提示框。
pyautogui.PAUSE设置完成指令后暂停的时间,用于缓冲。
pyautogui.FAILSAFE是一个可以终止程序的安全锁,当你把鼠标移到屏幕左上角一段时间后,程序会抛出异常并终止。
注意:本段代码要放在最后面,本文只是按照逻辑顺序说明各部分代码。
运行效果:
2.自动打开应用并检测登录
# 打开程序并检测登陆状态
def login():
try: # 在桌面上识别“大华云联”应用程序图标并自动双击打开
LCloud = pyautogui.center(pyautogui.locateOnScreen('LCloud/LCloud.png')) # 找到图像在屏幕上位置的中心点
py