こんにちは!この記事ではpythonでキーボード入力を自動化する方法を初心者の方にも分かりやすく解説していきます。
- この記事を読んで出来るようになる事
- アルファベットや記号の自動入力
- EnterやTab等の特殊文字の自動入力
- 複数のキーを同時に押してショートカットキーを自動入力
記事の最後では、学んだ内容を使って自動でメモ帳を起動して文字を入力するプログラムを紹介します。キーボード操作を自動化する事はpythonで日頃の面倒な作業を自動化するための第一歩です。頑張って学んでいきましょう!
ちなみに、pythonを使ってマウス操作を自動化する方法は以下の記事で解説しています。ぜひ参考にしてみてください!
PyAutoGUIで自動化
PyAutoGUIのインストール
初めてPyAutoGUIを使用する場合は下記のコマンドでインストールしましょう。
pip install pyautogui
パッケージのインポート
インストールしたPyAutoGUIを使うためにパッケージをインポートしましょう。
import pyautogui
文字列を自動で入力
PyAutoGUIで文字列を入力するにはwrite()を使います。オプションでintervalを指定すると指定した秒数の間隔で1文字づつ入力されます。
pyautogui.write('ABC') # ABCとキーボードで入力する。全角文字非対応
pyautogui.write('ABC', interval=1) # 1秒ごとに1文字入力する
write()では基本的に半角文字にのみ対応しており、全角文字やEnterやF1キーなどの特殊文字は入力できません。
# pyautogui.write('あああ') # 不可
# pyautogui.write('F1') # 不可
# pyautogui.write('Enter') # 不可
全角文字を入力する簡単な方法はクリップボードにコピーして貼り付ける方法です。要するにコピペを自動化しようって事ですね。pythonでクリップボードを扱うパッケージですとpyperclipが使いやすくてオススメですよ。また、特殊文字は次小節で説明するpress()を使うと入力できます。
特殊文字を自動で入力
press()を使うとアルファベット意外にもF1キーやEnterキーを入力できます。press()で使用できるキーの一覧はpyautogui.KEYBOARD_KEYSというリストに格納されているので、一覧を確認したい場合は下記のようにfor文で出力しましょう。
for v in pyautogui.KEYBOARD_KEYS:
print(v)
次に、press()で文字を入力してみましょう。基本的には引数に入力したいキーを渡すだけです。オプションとしてpressesを指定すると複数回の入力を1文で書くことができます。また、intervalを指定すると入力する時間の間隔を指定できます。
# 特殊文字入力
pyautogui.press('f1') # F1キーを入力
pyautogui.press('enter') # Enterキーを入力
# 3回enterを入力
pyautogui.press('enter', presses=3)
# 0.5秒毎に3回enterを入力
pyautogui.press('enter', presses=3, interval=0.5)
キーの同時押し
最後にキーの同時押し方法を説明します。今までは1つのキーを入力するだけでしたがPCを操作するにあたってショートカットキーの入力は避けて通れません。キーの同時押しはKeyDown()とKeyUp()の間にpress()でキーを入力する事で実現できます…なんだか難しい説明ですが、文字で説明するより下記のコードを見たほうが分かりやすいと思います。
pyautogui.keyDown('alt') # altキー長押し開始
pyautogui.press('tab') # tabキー1回目入力
pyautogui.press('tab') # tabキー2回目入力
pyautogui.press('tab') # tabキー3回目入力
pyautogui.keyUp('alt') # altキー長押し解除
このプログラムをスッキリ書くにはhold()を使用します。これはwith文とセットで使う関数で下記のようにwith文内のブロックではhold()で指定したキーが押しっぱなしになります。
with pyautogui.hold('alt'):
# このブロック内ではaltキー長押し
# 0.5秒毎に3回tabを入力
pyautogui.press('tab', presses=3, interval=0.5)
# ブロックを抜けるとaltキー長押し解除
また、単純な同時押しの場合はhotkey()を使って下記のように1行で書けます。
pyautogui.hotkey('win', 'e') # エクスプローラーを起動
メモ帳の自動起動と自動終了
これまでに学んだ知識を使って自動でメモ帳を起動して文字を入力するプログラムを動かしてみましょう!
実行結果
コード
import pyautogui
import time
# ファイル名を指定して実行
pyautogui.hotkey('win', 'r')
time.sleep(1)
# メモ帳のプログラム名を入力
pyautogui.write('notepad.exe', interval=0.1)
time.sleep(1)
# Enterキーを入力してメモ帳を起動
pyautogui.press('enter')
time.sleep(1)
# 文字入力
pyautogui.write('Kazuwo\'s Programming Blog', interval=0.1)
time.sleep(1)
# 全文字選択
pyautogui.hotkey('ctrl', 'a')
time.sleep(1)
# 全文字削除
pyautogui.press('del')
time.sleep(1)
# メモ帳を閉じる
pyautogui.hotkey('alt', 'f4')
まとめ
今回はpythonでキーボード入力を自動化する方法を紹介しました。PyAutoGUIを使うとマウスやキーボード操作の自動化プログラムを簡単に実装する事ができます。さらに、文字認識や画像認識と組み合わせると可能性は無限大なので、ぜひ皆さんも調べてみてくださいね!
コメント