【簡単Python】GUI操作自動化ライブラリ「PyAutoGUI」の基本操作方法

アフィリエイト広告を利用しています。
運営者・ポテ

いつもありがとうございます!

ノンプログラマー向け「Python解説シリーズ」へようこそ。

本稿では、「GUI操作自動化ライブラリ「PyAutoGUI」の基本操作方法」を解説いたします。


PyAutoGUI は、画面上の操作を 自動化するためのPythonの定番ライブラリです。

マウスやキーボードの操作、スクリーンショットの取得など、人が手作業で行っていた操作を自動化できる非常に便利なライブラリです。

Information
  • ライブラリ
    特定の機能をもったコードの集合体です。 ソフトウェア作成における部品のようなものです。新しいアプリケーションを作成する際、ライブラリを使用することで、プログラマーは複雑なコードを自分で書く必要がなくなります。
  • GUI(グラフィカルユーザーインターフェース)
    ユーザーとコンピューターがコミュニケーションするための視覚的なインターフェースです。インターフェースとは接点のことです。ウィンドウ、ボタン等のグラフィカルな要素を使用してユーザーとコンピューターがコミュニケーションできるようにします。

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) でクリップボードにコピーしています。

Information

write() で入力したい文字を直接送信する方法もありますが、日本語や記号を確実に扱うためにはクリップボード経由が安全です。

その後の操作は、入力動作を実行しています。

  • 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"

認識の基準となる画像ファイルを指定します。事前にキャプチャして保存したものを使うのが一般的です。

locateOnScreen で画像認識
# 画像認識
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に関する書籍は多数出版されています。興味のある方は、チェックしてみてください。

\チェックしてみよう/

\チェックしてみよう/

\チェックしてみよう/

【QRコード】PC<--->スマホの切り替えにご利用ください

【初心者歓迎】【無料相談受付中】業務改善アプリケーション作成のご相談を承ります

運営者・ポテ

いつもありがとうございます!

限られた時間をより良く使い、日本の生産性を高めたい──

みんなの実用学を運営するソフトデザイン工房では、業務整理や業務改善アプリケーション作成のご相談を承っております。

お気軽にご相談ください。


こちらの記事でも紹介しております。

おわりに

運営者・ポテ

ご覧いただきありがとうございました!

本稿では、「GUI操作自動化ライブラリ「PyAutoGUI」の基本操作方法」を解説いたしました。

お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。

皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。

なお、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。

この記事を書いた人

運営者・ポテソフトデザイン工房|日々の業務にちょうどいい自動化を
■人生を追求する凡人 ■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢 ■ソフトデザイン工房運営(個人事業者) - 業務支援アプリケーション作成サービスを展開 ■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成を研究。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です