プログラミング勉強の備忘録

主にpythonやスマホアプリを作るためのプログラミングで勉強した内容を忘れないように記載していきます。

【Python】pyautoguiを使ったキーボード操作、マウス操作

この記事では、ライブラリの「pyautogui」を使って、キーボード操作、マウス操作する方法について記載します。

  • Python 3.7.4
  • PyCharm 2019.2
  • PyAutoGUI 0.9.47

【一覧】

この記事に記載する処理について、一覧にまとめておきます。
今回使用する「pyautogui」は標準ライブラリではないため、インストールが必要です。

キーボード操作

コード 説明
press() キーを押す
keyDown() キーを押したままにする
keyUp() キーを離す
hotkey() 同時押し
typewrite() キーをタイプしていく

マウス操作

コード 説明
position() マウスの現在位置を取得
moveTo() マウスを指定の座標に向けて移動
moveRel() マウスを現在位置から指定の距離移動
click() 座標指定の位置をクリック
doubleClick() 座標指定の位置ををダブルクリック
dragTo() ドラックして指定の座標に向けて移動
dragRel() ドラックして指定の距離移動

【使い方】

キーボード操作

キーボード操作では、プログラムを実行することで、キーが押される(離す)操作が
行なわれます。
指定可能なキー一覧は下部に記載しておきます。

press()

「press」はキーを押す操作がされます。
使い方は下記の様に、引数に指定可能なキーを1つ渡します。

import pyautogui

pyautogui.press('a')
keyDown()
keyUp()

「keyDown」はキーを押したままにする操作、「keyUp」はキーを離す操作がされます。
使い方は下記の様に、引数に指定可能なキーを1つ渡します。
下記の例では、「Ctrl」を押したまま「C」のキーを押すことで、コピーのショットカット操作を行ない、その後で「Ctrl」を離しています。

import pyautogui

pyautogui.keyDown('ctrl')
pyautogui.press('c')

pyautogui.keyUp('ctrl')
hotkey()

「hotkey」はキーの同時押し操作です。
使い方は下記の様に、引数に複数の指定可能なキーを渡します。
下記の例では、「Ctrl」+「C」のコピーのショートカット操作を行なっています。

import pyautogui

pyautogui.hotkey('ctrl', 'c')
typewrite()

「typewrite」は連続してキーを押す操作です。
使い方は下記の様に、引数に文字列もしくは文字のリストを渡すとその順番に
キーを押す操作がされます。
引数は他にも「interval」、「logScreenshot」があります。(省略可能)
「interval」はキーを押す間の時間を設定できます。
「logScreenshot」はTrueにすることで、操作完了後のスクリーンショットが保存されます。

import pyautogui

pyautogui.typewrite('abcdefg', interval=1.0, logScreenshot=True)
指定可能なキー一覧

下記操作でも確認可能です。

import pyautogui

print(pyautogui.KEYBOARD_KEYS)
['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(',
')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`',
'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace',
'browserback', 'browserfavorites', 'browserforward', 'browserhome',
'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear',
'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete',
'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',
'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20',
'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja',
'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail',
'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',
'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6',
'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn',
'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',
'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator',
'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',
'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen',
'command', 'option', 'optionleft', 'optionright']

マウス操作

position()

「position」はマウスの現在位置を取得します。
使用方法は下記の様に、引数なしでコールすると、現在のマウス位置の座標を取得できます。

import pyautogui

mousePoint = pyautogui.position()
print(mousePoint)
# mousePoint >> Point(x=642, y=458)
moveTo()

「moveTo」は指定の座標に向けてマウスを移動させます。
使用方法は下記の様に、移動先の座標を指定すると、その座標に移動します。
省略可能ですが「duration」を指定すると、その時間をかけて対象の座標に移動します。

import pyautogui

pyautogui.moveTo(x=100, y=200, duration=10)
moveRel()

「moveRel」はマウスを現在位置から指定の距離移動させます。
使用方法は、「moveTo」とほぼ同じですが、マウスの移動は今いる位置から指定した距離の移動になります。

import pyautogui

pyautogui.moveRel(100, 200, duration=10)
click()

「click」は指定の座標位置をクリックする操作です。
使用方法は下記の様に、クリックしたい座標を引数にすると、その座標をクリックします。
また、省略可能ですが、「clicks」、「interval」、「button」も引数にあります。
「clicks」はクリック回数を指定できます。(省略時は1回)
「interval」はクリックとクリックの間の時間を指定できます。
「botton」は左クリック(left)、右クリック(right)、中央ボタン(middle)を指定できます。

import pyautogui

pyautogui.click(x=100, y=200, clicks=2, interval=1.0, button='right')
doubleClick()

「doubleClick」は指定の座標位置をダブルクリックする操作です。
使用方法は、座標を指定すると、その位置をダブルクリックします。
また、省略可能ですが、「duration」、「button」も引数にあります。
「duration」はその時間をかけて指定の座標に移動します。。
「botton」は左クリック(left)、右クリック(right)、中央ボタン(middle)を指定できます。

import pyautogui

pyautogui.doubleClick(x=100, y=200, duration=0.5, button='right')
dragTo()

「dragTo」はドラックしたまま指定の座標に移動します。
使用方法は下記の様に、移動先の座標を指定すると、その座標にドラッグしたまま移動します。
省略可能ですが「duration」を指定すると、その時間をかけて対象の座標に移動します。
また、こちらも省略可能ですが、「botton」で左クリック(left)、右クリック(right)、中央ボタン(middle)を指定できます。

import pyautogui

pyautogui.dragTo(100, 200, duration=3, button='left')
dragRel()

「dragRel」はドラックしたまま指定の距離を移動させます。
使用方法は、「dragTo」とほぼ同じですが、マウスの移動は今いる位置から指定した距離の移動になります。

import pyautogui

pyautogui.dragTo(100, 200, duration=3, button='left')

【参考サイト】

今回の作業にあたり、下記サイトを参考にさせて頂きました。
pyautogui.readthedocs.io
bttb.s1.valueserver.jp
bttb.s1.valueserver.jp