機械系エンジニアの備忘録

20代独身社会人。仕事では機械・機構の研究開発を行っているエンジニアが、自分の専門分野ではないpythonを扱って楽しむブログです。

MENU

【python】【PyAutoGUI】#2 マウスクリックとキー入力を自動化する

PyAutoGUIを用いてマウスクリックやキー入力を自動化する

f:id:stjun:20200509171504g:plain

 pythonの勉強法とその手順を記事にしました。

www.stjun.com

www.stjun.com

 

 

1. はじめに

前回、PyAutoGUIを用いてマウスの移動を自動化しました。

今回はキーボードの入力やマウスドラッグやクリックを自動化します。

また今回はPyAutoGUIはインストール済みとして進めます、まだお済でない方は#1の過去記事をご覧ください。

www.stjun.com

 

2. 説明:キーボード操作

2.1 冒頭GIF画像のコード例
import pyautogui as pag
import time

pag.PAUSE=1
time.sleep(10)

#英字をタイピング
pag.typewrite('Hello world')
pag.keyDown("enter")
pag.keyUp("enter")

#半角ボタンを押す
pag.press( 'kanji' )   

#0.2秒間隔で日本語をタイピング
pag.typewrite('konnnitiha sekai',interval=0.2)
pag.keyDown("enter")
pag.keyUp("enter")

 上記コードを実行すると記事冒頭のGIF画像のように自動で英字と日本語でタイピングが始まります。

 

3.2 文字入力:typewrite()

文字入力をする場合、typewrite()を使います。

pag.typewrite('Hello world')

例えば上記の場合、メモ帳をアクティブしておけば「Hello world」と英字が入力されます。

また 日本語を入力したい場合は、次のようにpress()を使います。

#半角ボタンを押す
pag.press( 'kanji' )   

'kanji'は「半角/全角ボタン」を意味します。

半角/全角切り替え以外にも例えばスペースを押したい場合は、'space'とします。

その後ローマ字打ちで入力します。

#「こんにちはせかい」とローマ字打ち
pag.typewrite('konnnitiha sekai',interval=0.2)

※注意:下のように日本語を直接入力しても反応しませんのでご注意ください。

#「こんにちはせかい」と日本語を入力しても反応しない
pag.typewrite('こんにちはせかい',interval=0.2)

 

3.2 コピーペースト:keyDown(),keyUp(),hotkey()
pag.keyDown("ctrl")
pag.press('c')
pag.keyUp("ctrl")

keyDown("ctrl)でctrlキーを押しっぱなしにできます。

その状態でpress()でCを押すことで「ctrl+c」が成立しコピーができます。

なお最後に忘れずにkeyUp()でctrlキーを解除しましょう。

これを忘れると今後の処理が全て「ctrl+OO」になってしまいます。

またペーストしたい場合はc⇒vに変えればOKです。

 

なおhotkey()を使えば、コピーペーストをもっと簡単にできます。

pag.hotkey("ctrl","c")

上記でもコピーペーストができます。hotkey()を使うとコードが簡潔になるのでいいですね。

 

3.3 その他

その他にも例えば右矢印は'right'など様々なキー入力ができます。

Googleで「pyautogui キーボード 一覧」で調べると沢山でてきますので、ぜひ調べてみて下さい。 

 

3. 説明:マウス操作

3.1 コード例
import pyautogui as pag

pag.PAUSE=1
#movetoは絶対座標(x座標、y座標,速さ、挙動)
pag.moveTo(1000,200,1,pag.easeInQuad)
#dragToは絶対座標までドラッグしながら移動
pag.dragTo(1800,500,3,pag.easeOutQuad)

#コピーペースト(ctrl+cの後にctrl+v)
pag.hotkey("ctrl","c")
pag.hotkey("ctrl","v")

上記を実行するとデスクトップ右上(正確には座標1(1000,200)~座標(1800,500)の間の領域)のファイルを、自動で複数選択してコピーペーストします。

f:id:stjun:20200509154730p:plain f:id:stjun:20200509154918p:plain

 

3.2 マウスドラッグ:dragTo()
#dragToは絶対座標までドラッグしながら移動
pag.dragTo(1800,500,3,pag.easeOutQuad)

dragTo()をすると現在位置~任意の位置までマウスドラッグしながら動きます。

因数は左から、x座標、y座標、動く速度、挙動になります。

まず、マウスの位置を決めるために過去記事#1で紹介したmoveToを用いてマウスドラッグを開始したい位置まで移動させます。

#movetoは絶対座標(x座標、y座標,速さ、挙動)
pag.moveTo(1000,200,1,pag.easeInQuad)

その後、dragTo()でマウスドラッグしながら動かすという流れになります。

 

3.3 別の方法:mouseDown(),mouseUp()

mouseDown()は左クリックを押してる状態、mouseUp()は左クリックを離した状態なので、次のように組み合わせることでマウスドラッグすることも可能です。

#movetoは絶対座標(x座標、y座標,速さ、挙動)
pag.moveTo(1000,200,1)
#mouseDownはドラッグ状態を保つ
pag.mouseDown()
pag.moveTo(1800,300,3)
#mouseUpはドラッグ状態を解除
pag.mouseUp()

 

3.4 マウスクリック:click()

click()を使うことでクリック動作も可能です。

#clickは絶対座標まで移動してクリック、clicksはクリック数、buttonは左クリック(left)か右クリック(right)か中央クリック(middle)
#intervalでクリック間隔も設定可能
pag.click(x=1000,y=500,clicks=1,button='right',interval=0.2)

その場でクリックしたい場合はxとyはいりません。

ダブルクリックをしたい場合は、clicks=2、button="left"、interval無しにすればOKです。

 

おすすめ書籍 

PyAutoGUIの使用方法が載っている書籍を紹介します。

この2つは非常に丁寧に書かれているのでお勧めです。

 「PythonGUI自動化しよう」については、Amazonの月額読み放題サービス「Kindle unlimited」に加入していれば読み放題です。

初回30日間は無料、退会も簡単なので試しに読んでみてもよさそうです。

 

4. 最後に

いかがだったでしょうか。

PyAutoGUIで面倒くさい作業は自動化しちゃいましょう!