【簡単Python】GUI操作ライブラリ PyAutoGUI 入門【動画あり】


いつもありがとうございます!
ノンプログラマー向け「Python解説シリーズ」へようこそ。
PyAutoGUI は、画面上の操作を 自動化するためのPythonの代表的なライブラリです。
マウスやキーボードの操作、スクリーンショットの取得など、人が手作業で行っていた作業をそのまま自動化できる非常に便利なライブラリです。
本稿では、この PyAutoGUI の基本的な使い方を解説します。
Python を活用して、自身やコミュニティに適した改善ツールを作成し、仕事量は半分に、成果は 2 倍にしていきましょう。
初心者の方にも理解しやすいよう、分かりやすく解説していきます。ぜひ、ご覧ください。
「PyAutoGUI」の基本操作方法
まず動画をチェック
本稿で解説する内容をまとめた動画です。まず、こちらをチェックしていただけると全容がつかめます。
マウス操作の基本

基本設定
ここでは、このプログラムで共通となる「ライブラリのインポート」と「基本設定」の部分を解説します。
コード全文は以下の通りです。
# 標準ライブラリのインポート
import time
# 外部ライブラリのインポート
import pyautogui
# ========== 基本設定 ==========
# FAILSAFE を有効化 ※デフォルトで有効だが解説のため明示的に示す
pyautogui.FAILSAFE = True
# すべての PyAUtoGUI コマンド実行後に自動で小休止(1秒)
pyautogui.PAUSE = 1
# マウスの移動時間を設定
MOVE_DURATION = 0.5順を追って解説します。
# 標準ライブラリのインポート
import time
# 外部ライブラリのインポート
import pyautoguiここでは、このプログラムで使用するライブラリをインポートしています。
# ========== 基本設定 ==========
# FAILSAFE を有効化 ※デフォルトで有効だが解説のため明示的に示す
pyautogui.FAILSAFE = True
# すべての PyAUtoGUI コマンド実行後に自動で小休止(1秒)
pyautogui.PAUSE = 1
# マウスの移動時間を設定
MOVE_DURATION = 0.5ここでは、プログラム全体を通して反映される共通の設定を行っています。
- FAILSAFE
マウスを画面左上に動かすとスクリプトが停止する安全装置です。デフォルトで有効ですが、ここでは、あえて明示しています。 - PAUSE
各コマンドの直後に自動で入る待機時間です。ここでは 1 秒を指定しています。これにより処理が安定し、挙動も確認しやすくなります。 - MOVE_DURATION
マウス移動にかける時間(秒)です。0.5 秒とすることで、一瞬ではなく自然な速度で移動します。
#01 マウスを左に動かす

ここからは、上述の基本設定の部分は省略したコードを示していきます。
まず最初は、マウスを動かすコードです。
# マウスを左に動かす ※ move:相対移動、 moveTo:絶対移動
pyautogui.move(-450, 0, duration=MOVE_DURATION)これは、pyautogui.move() を使って、マウスカーソルを 現在位置から左方向へ 450px 移動 させる処理です。
引数の (x, y) は移動量を表し、-450 は横方向にマイナス(左方向)へ動かす指定です。縦方向は 0 なので変化しません。
さらに、duration=MOVE_DURATION を指定することで、カーソルが瞬間的にではなく、設定した秒数をかけてゆっくり移動します。
ここでは「相対移動」を行う move() を使用しており、画面上の絶対座標を指定して移動する moveTo() とは区別されています。用途に応じて使い分けるのがポイントです。
#02 マウスを左に動かしてシングルクリックする
マウスを動かした後にクリックするコードを追加すると以下のようになります。
# マウスを左に動かす ※ move:相対移動、 moveTo:絶対移動
pyautogui.move(-450, 0, duration=MOVE_DURATION)
# クリックする
pyautogui.click()#03 マウスを左に動かしてダブルクリックする
ダブルクリックするコードに変更すると以下のようになります。
# マウスを左に動かす ※ move:相対移動、 moveTo:絶対移動
pyautogui.move(-450, 0, duration=MOVE_DURATION)
# ダブルクリックする
pyautogui.doubleClick()#04 マウスを左に動かして右クリックする
同様に、右クリックするコードに変更すると次のようになります。
# マウスを左に動かす ※ move:相対移動、 moveTo:絶対移動
pyautogui.move(-450, 0, duration=MOVE_DURATION)
# 右クリックする
pyautogui.rightClick()#05 マウスをドラッグして対象物を動かす
ドラッグするコードは以下のようになります。
# マウスを左に動かす ※ move:相対移動、 moveTo:絶対移動
pyautogui.move(-450, 0, duration=MOVE_DURATION)
# ドラッグする
pyautogui.dragRel(500, -300, duration=MOVE_DURATION, button="left")#06 直接対象物の座標を指定してダブルクリックする
マウスの移動など、必ずしも人間が行うPC作業を完全に再現させる必要はありません。直接座標指定でクリックすることも可能です。
# マウスを左に動かす ※ move:相対移動、 moveTo:絶対移動
pyautogui.move(-450, 0, duration=MOVE_DURATION)
# 直接座標指定でクリックする
pyautogui.doubleClick(678, 752)キーボード操作の基本

次はキーボード操作の解説です。同様にまずは基本設定から順に解説します。
基本設定
# 外部ライブラリのインポート
import pyautogui
# ========== 基本設定 ==========
# FAILSAFE を有効化 ※デフォルトで有効だが解説のため明示的に示す
pyautogui.FAILSAFE = True
# すべての PyAUtoGUI コマンド実行後に自動で小休止(1秒)
pyautogui.PAUSE = 1これは、このセクションで共通となる「ライブラリのインポート」と「基本設定」です。
解説は、上述の内容と同じですので省略します。
#01 文字を入力する
# 入力前メッセージ(入力フォームをアクティブにするために表示)
pyautogui.alert("入力フォームをアクティブにしてから、OKを押してください。")
# 文字入力
text = "PyAutoGUI 文字入力デモ"
pyperclip.copy(text)
pyautogui.press("f2")
yautogui.hotkey("ctrl", "v")
pyautogui.press("enter")これは、フォーム へ文字を入力する一連の流れを記述しています。
まず pyautogui.alert() によってアラートウィンドウを表示し、ユーザーに入力フォームをアクティブにするように促します。これにより、処理の対象となるフォームを前面へ切り替えます。(例:Excelであれば入力したいセルをアクティブする)
続いて、入力したい文字列を text 変数に代入し、pyperclip.copy(text) でクリップボードにコピーしています。
その後には、入力動作が記述されています。
pyautogui.press("f2"): セルの編集モードに入る ※エクセルのセルを想定しています。必要に応じて削除または修正してください。pyautogui.hotkey("ctrl", "v"): クリップボードから貼り付けpyautogui.press("enter"): 入力を確定
この流れにより、文字を入力しています。
#02 文字を選択する
# 入力前メッセージ(入力フォームをアクティブにするために表示)
pyautogui.alert("入力フォームをアクティブにしてから、OKを押してください。")
# 入力内容を選択
pyautogui.press("f2")
pyautogui.hotkey("ctrl","a")これは、入力フォームにフォーカスを移し、既存の入力内容を全選択する処理です。
pyautogui.press("f2"): 編集モードに切り替え(例:Excel のセルを編集できる状態にする)pyautogui.hotkey("ctrl", "a"): 入力中の内容をすべて選択
画面操作の基本

基本設定
同様にまずは基本設定を行います。
# 外部ライブラリのインポート
import pyautogui
# ========== 基本設定 ==========
# FAILSAFE を有効化 ※デフォルトで有効だが解説のため明示的に示す
pyautogui.FAILSAFE = True
# すべての PyAUtoGUI コマンド実行後に自動で小休止(1秒)
pyautogui.PAUSE = 1ここでは、このセクションで共通となる「ライブラリのインポート」と「基本設定」を行っています。
解説は、上述の内容と同様ですので省略します。
スクリーンショットを取得する
# ========== スクリーン走査 ==========
# 画面サイズの取得
size = pyautogui.size()
print(f"[スクリーン] サイズ: {size}")
# スクリーンショットの取得
img = pyautogui.screenshot()
img.save("screenshot.png")
# 部分スクリーンショットの取得
w, h = size
region_w, region_h = 600, 400
left = (w - region_w)//2
top = (h - region_h)//2
img_region = pyautogui.screenshot(region=(left, top, region_w, region_h))
img_region.save("screenshot_region.png")これは、pyautogui を使って スクリーンの情報を取得し、画像として保存する処理 を実行しています。
順を追って解説します。
# ========== スクリーン走査 ==========
# 画面サイズの取得
size = pyautogui.size()
print(f"[スクリーン] サイズ: {size}")ここでは、現在利用しているディスプレイ全体の解像度(幅と高さのピクセル数)を取得しています。たとえば、フルHD環境なら (1920, 1080) が返ります。
# スクリーンショットの取得
img = pyautogui.screenshot()
img.save("screenshot.png")画面全体をキャプチャし、screenshot.png というファイル名で保存しています。
# 部分スクリーンショットの取得
w, h = size
region_w, region_h = 600, 400
left = (w - region_w)//2
top = (h - region_h)//2
img_region = pyautogui.screenshot(region=(left, top, region_w, region_h))
img_region.save("screenshot_region.png")ここでは、画面中央の一部(幅 600px × 高さ 400px)を切り出して保存しています。
region=(x, y, width, height) の形式で領域を指定することで、必要な部分だけをキャプチャできます。
画像認識の基本

基本設定
同様にまずは基本設定を行います。
# 外部ライブラリのインポート
import pyautogui
# ========== 基本設定 ==========
# FAILSAFE を有効化 ※デフォルトで有効だが解説のため明示的に示す
pyautogui.FAILSAFE = True
# すべての PyAUtoGUI コマンド実行後に自動で小休止(1秒)
pyautogui.PAUSE = 1ここでは、このセクションで共通となる「ライブラリのインポート」と「基本設定」を行っています。
解説は、上述の内容と同様ですので省略します。
画像を認識してダブルクリックする
# テンプレート画像の読み込み
template = "template.png"
# 画像認識
box = pyautogui.locateOnScreen(template, confidence=0.8)
if box:
print(f"検出成功: box={box}")
center = pyautogui.center(box)
pyautogui.moveTo(center.x, center.y, duration=1)
pyautogui.doubleClick()
else:
print("検出できませんでした。表示倍率やウィンドウ重なりを確認してください。")これは、画面上に表示された対象を画像を認識し、それを基に自動操作を行う処理 です。
順を追って解説します。
# テンプレート画像の読み込み
template = "template.png"ここでは、認識の基準となる画像(テンプレート画像)ファイルを指定しています。事前にキャプチャして保存したものを使うのが一般的です。
# 画像認識
box = pyautogui.locateOnScreen(template, confidence=0.8)ここでは、スクリーン全体から template.png を探し、見つかれば座標情報を返します。
confidence=0.8は一致度を 80% 以上にする設定です。- 戻り値
boxには、left, top, width, heightの矩形情報が入ります。
if box:
print(f"検出成功: box={box}")
center = pyautogui.center(box)
pyautogui.moveTo(center.x, center.y, duration=1)
pyautogui.doubleClick()
else:
print("検出できませんでした。表示倍率やウィンドウ重なりを確認してください。")ここでは、見つかった矩形の中心座標を求め、そこへマウスを移動し、ダブルクリックしています。

以上で解説は終了です。
Python プログラミングスキルアップのための参考情報
ここでは参考図書を紹介しますが、これに限らず、ご自身に合ったものを選ぶことが大切だと考えいます。皆様の、より一層のご成功を心からお祈りしております。
「独学プログラマー」というPythonを題材にした書籍は学びの多い一冊でした。Pythonの技術解説だけにとどまらず、プログラミングの魅力や基本的な知識、思考法、さらには仕事の進め方まで幅広く学べます。
こちらの記事でも紹介しております。もしよろしければご覧ください。
Pythonに関する書籍はほかにも多数ありますので、ご自身に合った一冊を手に取ってみるのもおすすめです。
\チェックしてみよう/
\チェックしてみよう/
\チェックしてみよう/

【初心者歓迎】無料相談受付中

いつもありがとうございます!
限られた時間をより良く使い、日本の生産性を高めたい──
みんなの実用学を運営するソフトデザイン工房では、業務整理や業務改善アプリケーション作成のご相談を承っております。
お気軽にご相談ください。
こちらの記事でも紹介しております。
おわりに


ご覧いただきありがとうございました!
本稿では、GUI操作自動化ライブラリ「PyAutoGUI」の基本操作方法を解説しました。
お問い合わせやご要望がございましたら、「お問い合わせ/ご要望」フォームまたはコメント欄よりお知らせください。
この記事が皆様のお役に立てれば幸いです。
なお、当サイトでは様々な情報を発信しております。よろしければトップページもあわせてご覧ください。
この記事を書いた人
- ソフトデザイン工房|日々の業務にちょうどいい自動化を
- ■人生を追求する凡人 ■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢 ■ソフトデザイン工房運営(個人事業者) - 業務改善アプリケーションをご提供 ■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成にチャレンジ。





