PyAutoGUI 第2章 键盘全功能操作教程
PyAutoGUI 键盘全功能操作教程(核心2)
说明:本教程为 PyAutoGUI 核心操作专项教程,聚焦键盘全功能操作,包含详细参数说明、实操代码、注意事项,适配新手入门,可直接复制代码调试运行。所有操作均基于 PyAutoGUI 基础环境已安装完成(若未安装,可参考基础教程完成环境配置;中文输入需额外安装 pyperclip 库)。
2.1 文本输入
PyAutoGUI 提供多种文本输入方式,可满足英文、中文输入需求,同时支持设置输入间隔,避免因输入过快被系统检测为异常操作,适配各类场景。
1. 英文输入:write() / typewrite()
作用:向当前激活的输入框(如记事本、浏览器地址栏)输入英文、数字、符号,两个方法功能完全一致,可互换使用(typewrite() 为旧版本方法,write() 为新版本推荐方法)。
语法:
pyautogui.write(text, interval=0)
pyautogui.typewrite(text, interval=0)
参数说明:
text:必传参数,要输入的英文、数字、符号(字符串格式);
interval:可选参数,每个字符的输入间隔(单位:秒),默认 0(瞬间输入),设置后可实现慢速输入。
示例代码:
importpyautoguiimporttime# 基础配置(提升脚本稳定性)pyautogui.PAUSE=1pyautogui.FAILSAFE=True# 1. 瞬间输入英文文本(无间隔)pyautogui.write("Hello PyAutoGUI! 123456")time.sleep(1)# 2. 慢速输入(每个字符间隔0.2秒,防检测)pyautogui.write("I love Python programming.",interval=0.2)time.sleep(1)# 3. 旧方法 typewrite()(与 write() 功能一致)pyautogui.typewrite("PyAutoGUI Keyboard Tutorial",interval=0.1)2. 中文输入解决方案(pyperclip 剪贴板复制粘贴)
注意:PyAutoGUI 的 write()/typewrite() 方法不支持直接输入中文,需借助 pyperclip 库(剪贴板操作)实现中文输入,步骤为:复制中文文本 → 粘贴到输入框。
前置操作:安装 pyperclip 库(命令行输入:pip install pyperclip)。
核心逻辑:用 pyperclip.copy() 复制中文 → 用 pyautogui.hotkey() 调用“Ctrl+V”粘贴,实现中文输入。
示例代码(中文输入完整流程):
importpyautoguiimportpyperclip# 导入剪贴板库importtime pyautogui.PAUSE=1pyautogui.FAILSAFE=True# 1. 打开记事本(模拟输入场景,可替换为其他输入框)# 假设记事本图标坐标为 (100, 200),双击打开pyautogui.moveTo(100,200,duration=1)pyautogui.doubleClick()time.sleep(2)# 等待记事本打开# 2. 中文输入(剪贴板复制粘贴法)chinese_text="PyAutoGUI 键盘操作教程,支持中文输入!"pyperclip.copy(chinese_text)# 复制中文文本到剪贴板pyautogui.hotkey("ctrl","v")# 粘贴文本(Ctrl+V)time.sleep(1)# 3. 中英文混合输入mix_text="中文+English:PyAutoGUI 真好用!"pyperclip.copy(mix_text)pyautogui.hotkey("ctrl","v")3. 输入间隔 interval 参数(慢速输入防检测)
作用:设置每个字符的输入间隔,模拟人类手动输入速度,避免因瞬间输入大量字符被系统、软件检测为异常(如网页表单、登录界面)。
实用建议:间隔设置为 0.1-0.3 秒,既自然又不易被检测,根据实际场景调整。
示例代码(防检测慢速输入):
importpyautoguiimporttime pyautogui.PAUSE=1pyautogui.FAILSAFE=True# 模拟网页表单输入(慢速输入,间隔0.2秒)pyautogui.write("test123456",interval=0.2)# 账号输入pyautogui.press("tab")# 切换到密码框(后续会讲 press 方法)pyautogui.write("password789",interval=0.3)# 密码慢速输入,更安全2.2 单个按键按下/松开
针对单个按键的操作,PyAutoGUI 提供“单次按下”“长按不松”“手动松开”三种方式,同时支持上下文管理器自动释放按键,灵活适配不同场景(如长按回车、长按删除)。
1. 单次按下:press(key)
作用:按下并立即松开单个按键,相当于手动按一下按键(如按回车、按空格)。
语法:pyautogui.press(key)
参数说明:key 为按键名称(字符串格式),具体按键名称参考 2.4 按键对照表(如 "enter"、"space"、"backspace")。
示例代码:
importpyautoguiimporttime pyautogui.PAUSE=1pyautogui.FAILSAFE=True# 1. 按下回车(enter)pyautogui.press("enter")time.sleep(1)# 2. 按下空格(space)pyautogui.press("space")time.sleep(1)# 3. 按下退格(backspace),删除前一个字符pyautogui.write("test")time.sleep(1)pyautogui.press("backspace")# 删除最后一个字符 "t"2. 长按不松:keyDown()、松开:keyUp()
作用:手动控制按键的“按下”和“松开”,实现长按效果(如长按退格删除、长按方向键滚动),需搭配使用(按下后必须松开,否则按键会一直处于按下状态)。
语法:
pyautogui.keyDown(key) # 按下按键,不松开
pyautogui.keyUp(key) # 松开之前按下的按键
示例代码(长按操作):
importpyautoguiimporttime pyautogui.PAUSE=1pyautogui.FAILSAFE=True# 1. 长按退格键(3秒),删除多个字符pyautogui.write("hello world")time.sleep(1)pyautogui.keyDown("backspace")# 按下退格不松开time.sleep(3)# 长按3秒,删除多个字符pyautogui.keyUp("backspace")# 松开退格键# 2. 长按方向键右(2秒),移动光标pyautogui.keyDown("right")time.sleep(2)pyautogui.keyUp("right")3. 上下文管理器:with pyautogui.hold('shift'):(自动释放按键)
作用:无需手动调用 keyUp(),上下文管理器会自动在代码块执行完毕后释放按键,简化长按、组合按键操作,避免忘记松开按键导致异常。
语法:with pyautogui.hold(key): # 按下key不松开
代码块(在该代码块中,key 一直处于按下状态)
示例代码(自动释放按键):
importpyautoguiimporttime pyautogui.PAUSE=1pyautogui.FAILSAFE=True# 1. 长按 shift 键,输入大写字母(自动释放 shift)withpyautogui.hold("shift"):pyautogui.write("hello")# 输入结果为 "HELLO"time.sleep(1)# 2. 长按 ctrl 键,配合 click 实现 Ctrl+点击(自动释放 ctrl)withpyautogui.hold("ctrl"):pyautogui.click(200,300)# 相当于 Ctrl+点击# 3. 长按 alt 键,配合 press 实现 Alt+F4(关闭当前窗口)withpyautogui.hold("alt"):pyautogui.press("f4")2.3 组合快捷键(热键)
组合快捷键(如 Ctrl+C 复制、Ctrl+V 粘贴)是日常操作中最常用的功能,PyAutoGUI 提供 hotkey() 方法,自动处理按键的按下、释放顺序,无需手动控制 keyDown() 和 keyUp()。
1. 核心方法:hotkey(key1, key2, …, interval=0)
作用:按顺序按下多个按键,然后按相反顺序松开,实现组合快捷键操作。
参数说明:
key1, key2, …:必传参数,组合快捷键的按键(如 "ctrl", "c");
interval:可选参数,按键之间的按下间隔(单位:秒),默认 0,建议设置为 0.1 秒,避免按键冲突。
常用快捷键示例代码:
importpyautoguiimportpyperclipimporttime pyautogui.PAUSE=1pyautogui.FAILSAFE=True# 1. 打开记事本,输入测试文本pyautogui.moveTo(100,200,duration=1)pyautogui.doubleClick()time.sleep(2)pyperclip.copy("测试组合快捷键:Ctrl+C、Ctrl+V、Ctrl+A")pyautogui.hotkey("ctrl","v")time.sleep(1)# 2. 常用组合快捷键pyautogui.hotkey("ctrl","a",interval=0.1)# Ctrl+A 全选文本time.sleep(1)pyautogui.hotkey("ctrl","c",interval=0.1)# Ctrl+C 复制选中内容time.sleep(1)pyautogui.press("enter")# 换行pyautogui.hotkey("ctrl","v",interval=0.1)# Ctrl+V 粘贴内容time.sleep(1)pyautogui.hotkey("ctrl","s",interval=0.1)# Ctrl+S 保存文件time.sleep(1)pyautogui.hotkey("alt","f4",interval=0.1)# Alt+F4 关闭记事本2. 多键组合顺序、释放规则
按下顺序:hotkey() 会按参数传入的顺序依次按下按键(如 hotkey("ctrl", "shift", "a"),先按 Ctrl → 再按 Shift → 最后按 A);
释放顺序:按按下顺序的反方向释放(如上述组合,先释放 A → 再释放 Shift → 最后释放 Ctrl);
注意事项:组合快捷键中,修饰键(Ctrl、Shift、Alt)需放在前面,功能键(C、V、A 等)放在后面,避免按键冲突。
错误与正确示例对比:
# 错误示例:功能键在前,修饰键在后,会导致快捷键失效pyautogui.hotkey("c","ctrl")# 错误:先按 C,再按 Ctrl,不是 Ctrl+C# 正确示例:修饰键在前,功能键在后pyautogui.hotkey("ctrl","c")# 正确:Ctrl+C 复制2.4 所有按键对照表 KEYBOARD_KEYS
PyAutoGUI 支持所有电脑常用按键,按键名称需严格按照以下对照表填写(区分大小写,均为小写),避免因按键名称错误导致操作失效。以下为高频常用按键,完整按键列表可通过 pyautogui.KEYBOARD_KEYS 查看。
常用按键对照表
- 基础输入按键:
字母:"a", "b", …, "z"(小写,大写需配合 Shift 键);
数字:"0", "1", …, "9";
符号:"!", "@", "#", "$", "%", "&", "*", "(", ")", "-", "_", "+", "=", "[", "]", "{", "}", ";", ":", "'", """, ",", ".", "/", "?"。
- 功能按键:
回车:"enter"(或 "return");
空格:"space";
退格:"backspace";
制表符(Tab):"tab";
大写锁定:"capslock";
shift 键:"shift"(左 shift 可写 "shiftleft",右 shift 可写 "shiftright");
ctrl 键:"ctrl"(左 ctrl 可写 "ctrlleft",右 ctrl 可写 "ctrlright");
alt 键:"alt"(左 alt 可写 "altleft",右 alt 可写 "altright");
windows 键:"win"(或 "super");
删除键:"delete"(删除光标后字符);
插入键:"insert"(切换插入/覆盖模式)。
- 方向键:
上:"up";
下:"down";
左:"left";
右:"right"。
- 功能键(F1-F12):
- "f1", "f2", "f3", …, "f12"。
- 其他按键:
ESC 键:"esc";
PageUp 键:"pageup";
PageDown 键:"pagedown";
Home 键:"home";
End 键:"end"。
查看完整按键列表代码:
importpyautogui# 打印所有支持的按键名称(共100+个,包含各类特殊按键)print(pyautogui.KEYBOARD_KEYS)2.5 键盘实战:自动输入表单、自动快捷键操作
结合本章所有键盘操作,编写两个实战脚本,分别实现“自动填写网页表单”和“自动快捷键操作(文件管理)”,模拟日常办公场景,可直接修改参数适配自己的需求。
实战1:自动填写网页表单(英文+中文混合输入)
实战需求:
打开浏览器(假设浏览器图标坐标为 (200, 100));
输入网页地址(英文),按下回车进入页面;
等待页面加载,填写表单(英文账号、中文姓名、数字电话);
按下提交按钮(模拟点击,结合鼠标操作)。
完整实战代码:
importpyautoguiimportpyperclipimporttime# 基础配置pyautogui.PAUSE=1pyautogui.FAILSAFE=True# 1. 打开浏览器(双击浏览器图标)browser_x,browser_y=200,100# 浏览器图标坐标(需自行获取)pyautogui.moveTo(browser_x,browser_y,duration=1)pyautogui.doubleClick()time.sleep(3)# 等待浏览器打开# 2. 输入网页地址,按下回车进入页面pyautogui.write("https://example.com/form",interval=0.1)# 英文地址输入pyautogui.press("enter")time.sleep(5)# 等待页面加载(根据网络速度调整)# 3. 填写表单(假设表单输入框坐标已提前获取)# 3.1 填写英文账号(输入框坐标:300, 200)pyautogui.moveTo(300,200,duration=0.8)pyautogui.click()# 激活输入框pyautogui.write("test_user123",interval=0.1)time.sleep(1)# 3.2 填写中文姓名(输入框坐标:300, 250)pyautogui.moveTo(300,250,duration=0.8)pyautogui.click()chinese_name="张三"pyperclip.copy(chinese_name)pyautogui.hotkey("ctrl","v")time.sleep(1)# 3.3 填写数字电话(输入框坐标:300, 300)pyautogui.moveTo(300,300,duration=0.8)pyautogui.click()pyautogui.write("13800138000",interval=0.1)time.sleep(1)# 4. 点击提交按钮(提交按钮坐标:400, 350)pyautogui.moveTo(400,350,duration=0.8)pyautogui.click()print("表单自动填写完成!")实战2:自动快捷键操作(文件管理)
实战需求:
打开文件资源管理器(Win+E 快捷键);
全选当前文件夹内文件(Ctrl+A);
复制文件(Ctrl+C);
切换到目标文件夹(假设坐标:500, 400),粘贴文件(Ctrl+V);
保存操作(Ctrl+S),关闭资源管理器(Alt+F4)。
完整实战代码:
importpyautoguiimporttime# 基础配置pyautogui.PAUSE=1pyautogui.FAILSAFE=True# 1. 打开文件资源管理器(Win+E 快捷键)pyautogui.hotkey("win","e",interval=0.1)time.sleep(3)# 等待资源管理器打开# 2. 全选当前文件夹内文件(Ctrl+A)pyautogui.hotkey("ctrl","a",interval=0.1)time.sleep(1)# 3. 复制文件(Ctrl+C)pyautogui.hotkey("ctrl","c",interval=0.1)time.sleep(1)# 4. 切换到目标文件夹(点击目标文件夹图标)target_folder_x,target_folder_y=500,400# 目标文件夹坐标(需自行获取)pyautogui.moveTo(target_folder_x,target_folder_y,duration=1)pyautogui.doubleClick()time.sleep(2)# 5. 粘贴文件(Ctrl+V)pyautogui.hotkey("ctrl","v",interval=0.1)time.sleep(2)# 6. 保存操作(部分文件夹需 Ctrl+S 保存,可选)pyautogui.hotkey("ctrl","s",interval=0.1)time.sleep(1)# 7. 关闭资源管理器(Alt+F4)pyautogui.hotkey("alt","f4",interval=0.1)print("文件自动复制粘贴完成!")实操注意事项
脚本中的坐标(如浏览器图标、表单输入框),需通过上一篇鼠标教程中的“实时坐标监控脚本”获取,确保精准定位;
中文输入必须安装 pyperclip 库,若未安装,运行脚本会报错(命令行输入 pip install pyperclip 即可安装);
组合快捷键的按键顺序需正确(修饰键在前,功能键在后),避免按键冲突;
等待时间(time.sleep())需根据电脑运行速度、网络速度调整,确保操作连贯,避免因页面未加载完成导致操作失效;
运行脚本时,确保目标窗口(如浏览器、记事本)无遮挡,避免其他窗口干扰操作。
拓展提示
本章节实战脚本可灵活修改,比如替换为“自动登录软件”“自动填写表格”“自动发送消息”等场景,核心逻辑一致:激活输入框 → 输入内容(英文/中文) → 执行快捷键/点击操作,只需修改坐标、输入文本和等待时间即可。
