Python 模拟键盘鼠标操作:pyautogui 自动化入门
Python 用 pyautogui 控制鼠标移动点击、键盘打字和快捷键,实现重复性 GUI 操作自动化,给出完整代码和防误触、紧急停止等注意事项。
场景痛点
每天要在 ERP 里点同样的菜单、填同样的表单、导出同样的报表,点到手酸还容易漏。Python 的 pyautogui 库能模拟真实的鼠标点击、键盘输入、快捷键,把这些重复 GUI 操作录成脚本,一键跑完,比手动快十倍。
用到的库
pip install pyautogui
完整代码
import time
import pyautogui
# 安全开关:鼠标甩到屏幕左上角会抛 FailSafeException,紧急停止
pyautogui.FAILSAFE = True
pyautogui.PAUSE = 0.3 # 每个 pyautogui 动作后停顿 0.3 秒,给系统反应时间
def demo_mouse():
"""演示鼠标移动、点击、拖拽"""
sw, sh = pyautogui.size()
print(f"屏幕分辨率:{sw}x{sh}")
# 移动到屏幕中心并单击
pyautogui.moveTo(sw // 2, sh // 2, duration=0.5)
pyautogui.click()
# 相对当前位置移动 100 像素再右键
pyautogui.moveRel(100, 50, duration=0.3)
pyautogui.click(button="right")
# 拖拽:从 (100,100) 拖到 (400,300)
pyautogui.moveTo(100, 100, duration=0.3)
pyautogui.dragTo(400, 300, duration=0.5, button="left")
def demo_keyboard():
"""演示键盘输入、快捷键、组合键"""
# 等 2 秒让你切到记事本
print("2 秒后开始打字,请切到记事本...")
time.sleep(2)
# 输入一段文字
pyautogui.typewrite("Hello, this is Python auto typing.", interval=0.05)
# 按回车换行
pyautogui.press("enter")
# 快捷键:全选 Ctrl+A、复制 Ctrl+C
pyautogui.hotkey("ctrl", "a")
pyautogui.hotkey("ctrl", "c")
pyautogui.press("down")
# 输入中文需要靠剪贴板(pyautogui 不支持直接打中文)
import pyperclip
pyperclip.copy("这是从剪贴板粘贴的中文。")
pyautogui.hotkey("ctrl", "v")
def demo_hotkey_sequence():
"""演示打开运行窗口、执行命令"""
pyautogui.hotkey("win", "r")
time.sleep(0.5)
pyautogui.typewrite("notepad", interval=0.05)
pyautogui.press("enter")
def main():
# demo_mouse()
demo_keyboard()
# demo_hotkey_sequence()
if __name__ == "__main__":
main()
代码讲解
pyautogui.FAILSAFE = True:鼠标甩到屏幕左上角会抛异常退出脚本,是写自动化脚本时的紧急刹车。pyautogui.PAUSE = 0.3:每个动作后自动 sleep 0.3 秒,避免程序比系统反应还快导致漏点。moveTo(x, y, duration=0.5)平滑移动到坐标;click(button="right")右键点击;dragTo拖拽。typewrite只能打 ASCII 字符,不支持中文;打中文必须靠pyperclip.copy+Ctrl+V。hotkey("ctrl", "a")模拟组合键,等价于按住 Ctrl 再按 A。press("enter")按一下回车,按键名参考 pyautogui 文档,如enter、esc、tab、f5。
运行结果
运行 demo_keyboard 后 2 秒内切到记事本,会自动打出英文句子、换行、Ctrl+A/C,再粘贴一段中文。demo_hotkey_sequence 会弹出 Win+R 运行框并自动打开记事本。整个过程鼠标键盘会"自己动",想看结果别动鼠标。
注意事项
- 坐标写死非常脆弱:分辨率、窗口位置一变就点错。建议先用
pyautogui.locateOnScreen("button.png")找图定位,再点击。 - 中文输入必须走剪贴板,不要尝试
typewrite("中文"),会报错。 - 写脚本时头几行先
time.sleep(3),给你时间切到目标窗口。 - 远程桌面下 pyautogui 也能跑,但焦点要落在远程桌面窗口里。
- 游戏、网银、带反外挂的软件会屏蔽模拟输入,不要用来做违规操作。
- 紧急停止:把鼠标快速甩到屏幕左上角,FAILSAFE 会触发。

更新时间:2026-09-14 20:34:56
上一篇:Python 系统通知弹窗提醒:plyer 跨平台 Toast 通知