PyAutoGUIで面倒ごとを自動化しよう
今回はPyAutoGUIで日本語の入力の方法を紹介していきます。
こんな感じ。
日本語入力
PyAutoGUIでのキーボード入力はpyautogui.typewrite(”abcde”)等で実現できますがこれをpyautogui.typewrite(”あいうえお”)のように日本語を使用すると基本的にエラーとなります。
これはPyAutoGUIの仕様なので仕方がないです。
そこで、対応策として以下の方法で実現する事が可能です。
入力したい日本語をクリップボードにコピーし、クリップボードから貼り付ける。
少し、無理やり感がありますが現状打てる最善策かと思います。
必要ライブラリ
import pyautogui
import pyperclip #クリップボードへのコピーで使用
pyperclipのコピーメソッドを利用することで任意の文字列をクリップボードにコピーができます。
クリップボードに値を渡せれば後はクリップボードの値をペーストできれば擬似的に日本語入力ができます。
ペーストはショートカットキーのctr + v でできるのでここはPyAutoGUIの得意分野です。
pyperclip.copy("あいうえお")
pyautogui.hotkey('ctrl', 'v')
pyperclip.copy()で入力したい日本語をクリップボードへコピーができます。
pyautogui.hotkey(‘ctrl’, ‘v’)でクリップボードからペーストできます。
Macの場合はpyautogui.hotkey(‘command’, ‘v’)になります。
これで、日本語入力ができるようになります!。
今回はイレギュラー対応としてクリップボードへのコピーからペーストの方法を紹介しましたが、個人的には英字であってもクリップボードへのコピーからペーストの流れの方がおすすめです。
PyAutoGUIは裏で実際のキー入力を再現しているので実際に文字数分キー入力の処理が動いています。
ペーストであればこちらは1回のキー入力で複数文字を入力できるので入力途中に予期しない動作の発生確率を減らすことができます。
ソースコード
import pyautogui as gui
import pyperclip as clip
from time import sleep
import sys
try:
x,y = gui.locateCenterOnScreen("./chrome.png")
gui.doubleClick(x/2,y/2) #chromeを起動
sleep(2)
clip.copy("あいうえお")
gui.hotkey('ctrl', 'v') #Macの場合は('command', 'v')
gui.press('enter')
except Exception as ex:
print("対象が見つかりませんでした。")
print(ex)
上記ソースコードにあるsleep(2)とは
”ここで2秒間待機してから次の処理を実行してください。”
を意味しています
待機処理に関しては以下の記事で紹介していますので参考にしてみてください。