質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PyAutoGUI

PyAutoGUIは、Windows、Mac OS、Linuxに対応した、Python用のGUI自動化ライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2046閲覧

pyautoguiのkeyupコマンドについて

GamerIris

総合スコア4

PyAutoGUI

PyAutoGUIは、Windows、Mac OS、Linuxに対応した、Python用のGUI自動化ライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/09/06 12:30

編集2021/09/06 12:42

前提・実現したいこと

■処理フロー
画面のピンチアウト(下記L21~24箇所)

画面を上へドラッグ(下記L25箇所)



■システム構成
PC :Raspberry Pi 4
メモリ :8GB
OS :Raspberry Pi OS(32bit)
Android:AU AQUOS R2 SHV42 Premium Black

■使用ツール
python(開発言語)
pyautogui(キーボード操作制御、アンドロイド画面認識制御)
scrcpy(Android制御)

<イメージ>
RaspberryPi4 ⇔ python(pyautogui) ⇔ scrcpy ⇔ Android

■確認内容
下記記載理由より、
keyUpコマンドが効かないことによるバグの見立てですが、
上記コマンドを有効にする現状リカバリ案が思いつかない状況です。
有識者様によるご教授を頂ければと思います。

発生している問題・エラーメッセージ

Android端末のapl上にて、 画面のピンチアウト(下記a.py L21~24箇所)後、 画面を上へドラッグ(下記a.pyy L25箇所)を期待していたが、 keyUpコマンドが反応せずドラッグ操作(後続他クリック操作含む)が機能しなくなる事象となります。

該当のソースコード

python

1~a.py(一部抜粋)~ 2if((mapN == 0) or (i != mapN - 1)): 3 # スクロール画像を確認 → 下へスクロール 4 if(self.serch_image2(img_path = SCROLL, wait_time = 0.2, conf = 0.95)): 5 # 初回操作時 → 画面初期化 6 if(firstTutchScrool): 7 self.serch_drag_image(img_path = SCROLL, conf = 0.95, offset = (0, -1080), return_loc=True) 8 # フラグをFalseへ変更 9 firstTutchScrool = False 10 #画面を下へスクロール 11 self.serch_drag_image(img_path = SCROLL, conf = 0.95, offset = (0, 50), return_loc=True) 12# スクロール画像を未確認 → タッチスクロール 13else: 14 # 初回操作時 → 画面初期化 15 if(firstTutchScrool): 16 flag3 = False 17 num3 = 0 18 while (flag3 is False): 19 # ターミナル文言を確認 → 画面初期化 20 if(flag3:=self.serch_image2(img_path = TERMINAL, wait_time = 0.2, conf = 0.95)): 21 # 画面縮小 22 self.keyDown(wait_time = 1.5, target_key = 'ctrl', img_x = X_SC, img_y = Y_SC) 23 self.drag(wait_time = 1.5, img_x = (X_SC + 100), img_y = (Y_SC + 100), offset = (-100, -100), return_loc=True) 24 self.keyUp(wait_time = 1.5, target_key = 'ctrl', img_x = X_SC, img_y = Y_SC) 25 # 画面を一番上へドラッグ 26 self.drag(wait_time = 0.2, img_x = X_SC, img_y = Y_SC, offset = (0, Y_SC), return_loc=True) 27 # フラグをFalseへ変更 28 firstTutchScrool = False 29 # ターミナル文言を未確認 → 待機 30 else: 31 if(num3 < 20): 32 time.sleep(0.6) 33 num1+=1 34 continue 35 else: 36 raise UniqueException("roopの為、処理中断") 37 #画面を下へタッチスクロール 38 self.drag(wait_time = 0.2, img_x = X_SC, img_y = Y_SC, offset = (0, -50), return_loc=True) 39 40~b.py(一部抜粋)~ 41################################### 42# 指定位置でドラッグ操作 43# 44def drag(self, wait_time, img_x, img_y, offset = (0, 0), return_loc = True, drag_time = 0.35): 45 try: 46 # 現在位置を取得 47 loc = pyautogui.position() 48 49 # 指定位置へ移動 50 pyautogui.moveTo(img_x, img_y, duration = 0) 51 52 # ドラッグ操作 53 pyautogui.dragTo(img_x + offset[0], img_y + offset[1], drag_time, button = ('left')) 54 print("({:1}, {:2}) is {:3} drug".format(img_x, img_y, offset[1])) 55 56 # 指定時間までsleep 57 time.sleep(wait_time) 58 59 return True 60 61 except Exception as e: 62 print(e) 63 return False 64 65################################### 66# 指定キーホールド 67# 68def keyDown(self, wait_time, target_key, img_x, img_y): 69 try: 70 # 現在位置を取得 71 loc = pyautogui.position() 72 73 # 対象位置へ移動 74 pyautogui.moveTo(img_x, img_y, duration = 0) 75 76 # 指定キーをホールド 77 pyautogui.keyDown(target_key) 78 print("chara{:1} is keyDown".format(target_key)) 79 80 # 指定時間までsleep 81 time.sleep(wait_time) 82 83 return True 84 85 except Exception as e: 86 print(e) 87 return False 88 89################################### 90# 指定キーホールド解除 91# 92def keyUp(self, wait_time, target_key, img_x, img_y): 93 try: 94 # 現在位置を取得 95 loc = pyautogui.position() 96 97 # 対象位置へ移動 98 pyautogui.moveTo(img_x, img_y, duration = 0) 99 100 # 指定キーをホールド 101 pyautogui.keyUp(target_key) 102 print("chara{:1} is keyUp".format(target_key)) 103 104 # 指定時間までsleep 105 time.sleep(wait_time) 106 107 return True 108 109 except Exception as e: 110 print(e) 111 return False 112

試したこと

・scrcpyを未起動での処理実行 →発生事象未解消
・a.pyのL23内容をコメントアウト後処理実行→ピンチアウト動作は確認
・a.pyのL21~L23の指定sleep時間を延長 →発生事象未解消
・Numlockを事前に無効状態での処理実行 →発生事象未解消
(参考:https://teratail.com/questions/254519)

補足情報(FW/ツールのバージョンなど)

conda version:4.10.3
python version:python3.8.10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決した為、クローズ致します。
(再度環境構築を実施しましたら正常動作しました)

投稿2021/09/08 03:08

GamerIris

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問