Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでマウスとキーボード操作を自動化する方法:pyautogui完全ガイド

この記事では、Pythonのpyautoguiモジュールを使って、マウスとキーボードの操作を自動化する方法を解説します。

PyAutoGUIは、マウスやキーボードをプログラムから制御できるライブラリです。画面上のクリック、文字入力、ショートカットキーの実行など、さまざまなGUI操作を自動化できます。クロスプラットフォームに対応しており、Windows・macOS・Linuxいずれでも動作する点が大きな特徴です。

PyAutoGUIはサードパーティ製のライブラリのため、使用前にインストールが必要です。以下のコマンドを実行しましょう。

pip install pyautogui

マウス操作の自動化

まずはマウスの動きを自動化するプログラムを見てみましょう。スクリプトを実行すると、コマンドごとにマウスが実際に動く様子を確認できます。ここではCLI(対話シェル)から実行して、マウスの挙動を確認しています。数値を変えながら、いろいろと試してみてください。

実行例

>>> import pyautogui
>>> pyautogui.size()
Size(width=1366, height=768)
>>> width, height = pyautogui.size()
>>> width
1366
>>> height
768
>>> pyautogui.position()
Point(x=750, y=293)
>>> pyautogui.moveTo(10, 10)
>>> pyautogui.move(10, 10, duration=1.5)
>>> pyautogui.moveRel(250, 0, duration=2.5)
>>> pyautogui.moveRel(0, -150, duration=1.5)
>>> pyautogui.position()
Point(x=210, y=526)
>>> pyautogui.click(339, 38)
>>> pyautogui.click()

プログラムを実行すると、duration(所要時間)を指定した場合、マウスはその時間をかけてゆっくり移動します。最後のpyautogui.click()などで制御が暴走した場合は、Escキーを押すことで操作を取り戻せます。

主なマウス関数

  • size():画面の解像度(幅・高さ)を取得
  • position():現在のマウスカーソル座標を取得
  • moveTo(x, y):指定した絶対座標へマウスを移動
  • move(x, y) / moveRel(x, y):現在位置からの相対座標で移動
  • click(x, y):指定座標をクリック(引数なしで現在位置をクリック)

キーボード操作の自動化

typewrite() 関数

キーボード操作の基本となるのが typewrite() 関数です。引数に渡した文字列をそのまま入力します。オプションの interval キーワード引数に整数または浮動小数点数を指定すると、1文字ごとの入力間隔(遅延)を設定できます。

>>> pyautogui.typewrite('Hello, TutorialsPoint!')  # 一瞬で入力される
Hello, TutorialsPoint!
>>> pyautogui.typewrite('Hello, TutorialsPoint!', interval=0.25)  # 各文字の後に0.25秒の遅延
Hello, TutorialsPoint!

press() / keyDown() / keyUp() 関数

EnterやF1などの特殊キーを押すには、press() 関数を使います。引数には pyautogui.KEYBOARD_KEYS に含まれる文字列(例:enter、esc、f1)を渡します。

>>> pyautogui.press('enter')   # Enterキーを押す
>>> pyautogui.press('f1')      # F1キーを押す
>>> pyautogui.press('left')    # 左矢印キーを押す

typewrite() のように複数のキーを連続して押したい場合は、文字列のリストを press() に渡します。

>>> pyautogui.press(['left', 'left', 'left'])

また、キーを押し続ける・離す操作を個別に制御したい場合は、keyDown()keyUp() を使います。

hotkey() 関数

Ctrl+Cのようなホットキー(ショートカットキー)を簡単に実行するために、hotkey() 関数が用意されています。複数のキー名を渡すと、渡した順番でキーを押し下げ、逆順で解放します。

>>> pyautogui.hotkey('ctrl', 'shift', 'esc')

上記のコードをWindows環境で実行すると、「タスクマネージャー」のウィンドウが開きます。これは以下のコードと同じ動作です。

>>> pyautogui.keyDown('ctrl')
>>> pyautogui.keyDown('shift')
>>> pyautogui.keyDown('esc')
>>> pyautogui.keyUp('esc')
>>> pyautogui.keyUp('shift')
>>> pyautogui.keyUp('ctrl')

pyautoguiのキーボード機能まとめ

最後に、これまで紹介したキーボード関連の機能を組み合わせたデモプログラムを示します。

>>> import pyautogui
>>> pyautogui.click(90, 90)
>>> pyautogui.click(90, 90); pyautogui.typewrite('Hello, World!')
>>> pyautogui.click(150, 150); pyautogui.typewrite('Hello, World!', interval=0.2)
>>> pyautogui.click(150, 150); pyautogui.typewrite(['A', 'B', 'left', 'left', 'x', 'y'])
>>> pyautogui.typewrite(['a', 'b', 'left', 'left', 'X', 'Y'])
XYab
>>> pyautogui.press('f1')

このように、文字と特殊キーを混在させたリストも typewrite() に渡せます。上記の例では「a」「b」と入力した後、左矢印キーを2回押してカーソルを先頭に戻し、そこへ「X」「Y」を挿入しているため、結果は「XYab」になります。

なお、pyautogui.KEYBOARD_KEYS を参照すると、pyautoguiで扱えるすべてのキー名の一覧を確認できます。英数字や記号のほか、alt、ctrl、shift、ファンクションキー、矢印キー、音量キーなど、多数のキーが定義されています。

PyAutoGUIを活用すれば、定型作業の自動化やRPA的な処理、テストの自動化など、幅広い用途に応用できます。まずは簡単なマウス移動や文字入力から試してみてください。

  1. PythonとScrapyで実現するWebスクレイピング入門:インストールからデータ抽出まで

    クローラー(Web巡回プログラム)を開発するためのフレームワークの中でも、特に優れているのが「Scrapy」です。Scrapyは人気の高いWebスクレイピング・クローリングフレームワークであり、高レベルな機能を提供することで、Webサイトからのデータ抽出を格段に簡単にしてくれます。本記事では、Scrapyのインストール方法から、実際にWebページを取得し、タイトルやリンクなどの情報を抽出するまでの一連の流れを解説します。ScrapyのインストールWindows環境へのScrapyのインストールは非常に簡単です。pipを使う方法と、Anacondaを利用している場合はcondaを使う方法の2通り

  2. MacでPython 3にアップグレードして使いこなす方法

    購入したばかりの新しいMacには、必要なソフトウェアの最新版がすべて入っていると思いがちですが、ユーザー向けアプリについては概ね正しくても、基盤となるフレームワークに関しては話が別です。安定版の最新リリースがPython 3.5であるにもかかわらず、新しいMacには今なおPython 2.7.10がプリインストールされています。バージョン間の差が大きく感じられるのはそのためです。ただし、新しいバージョンが必ずしも優れているとは限りません。Python 3はPython 2との後方互換性を持たず、多くの開発者は依然としてPython 2を使い続けているのです。 2to3を使うか、使わないか?