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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Linux Mint

Linux Mintは、使いやすいLinuxシステムの提供を目的としたLinuxディストリビューションです。UbuntuとDebianをベースにしており、Ubuntuのリポジトリを共有しています。

Python 3.x

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

Q&A

解決済

1回答

1232閲覧

pyautogui ウィンド外でのbind 操作の再生ソフト

Untitled_Sample

総合スコア192

Linux Mint

Linux Mintは、使いやすいLinuxシステムの提供を目的としたLinuxディストリビューションです。UbuntuとDebianをベースにしており、Ubuntuのリポジトリを共有しています。

Python 3.x

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

0グッド

0クリップ

投稿2019/09/03 08:21

pyautogui ウィンド外でのbind方法
マウスやキーボードの操作を記録した後に再生できるソフトを作ろうと思ったのですが、
マウスなどの操作を管理が難しく、ウィンド内の操作しか記録できておりません。

現状では全体画面にした後に、タスクバーを入れ替えながら、操作を記録して居ます。
これをウィンド外でも検出できる様にするには、どうすれば良いでしょうか?

# 環境
Linux Mint
リリース Linux Mint 19.1 Tessa 64 ビット
カーネル Linux 4.15.0-60-generic x86_64
MATE 1.20.1

記録コード

python

1 2# クリック場所 3Hacka_Doll=[] 4 5 6 7# インポート 8import pyautogui 9import tkinter as tk 10 11 12# マウスの座標表示 13def timer(): 14 px,py = pyautogui.position() 15 label['text'] = '{},{}'.format(px,py) 16 root.after(10, timer) 17 18 19# 左クリックの検出 と Hacka_Doll 配列に追加 20def click(event): 21 print( 22 pyautogui.position() 23 ) 24 25 # クリック場所をHacka_Dollに追加 26 Hacka_Doll.append([pyautogui.position()[0], 27 pyautogui.position()[1]]) 28 29 #print(Hacka_Doll) 30 31# 右クリックの検出 と Hacka_Doll 配列に追加 32def click02(event): 33 print( 34 pyautogui.position(),'Button-3' 35 ) 36 37 # クリック場所をHacka_Dollに追加 38 Hacka_Doll.append([pyautogui.position()[0], 39 pyautogui.position()[1],'Button-3']) 40 41 42 43# キーボード イベントを検出 Hacka_Doll配列に追加 44def onKeyPress(event): 45 print( 46 event.char 47 ) 48 49 Hacka_Doll.append([event.char]) 50 51 52# 基本情報 53root = tk.Tk() 54root.title("Tkinter") 55 56#x,y=pyautogui.size()[0],pyautogui.size()[1] 57#print(x,y) 58# サイズ 59root.geometry("200x200") 60# うぃんどぉを透過 61root.wait_visibility(root) 62root.wm_attributes('-alpha',0.5) 63 64# キーの監視 65root.bind("<Button-1>", click) 66root.bind("<Button-3>", click02) 67root.bind('<KeyPress>', onKeyPress) 68 69 70# マウス座標の表示 と 配置する場所 71label = tk.Label(root,text="size",font=("",20)) 72label.place(x=10, y=10) 73label.update() 74 75# 更新 76timer() 77# 終了するまでループ 78root.mainloop() 79 80 81 82# デバッグ表示 83print("\n") 84print( Hacka_Doll) 85 86 87 88 89 90# 記録した操作をcsvに出力 91 92import csv 93data=Hacka_Doll 94#data = [['りんご', 'みかん'], ['いちご', 'メロン']] 95with open('data.csv', 'w') as file: 96 writer = csv.writer(file, lineterminator='\n') 97 writer.writerows(data) 98 99 100 101 102

再生コード

python

1 2 3# 作成したdata.csvを読み込み 4import csv 5csv_file = open("data.csv", "r", encoding="ms932", errors="", newline="" ) 6f=csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) 7 8 9# いんぽーと 10import pyautogui 11# 操作の再生隔離を管理したい いんぽーと 12from time import sleep 13 14 15 16# 読み込んだリストの再生 処理 17 18for i in list(f): 19 # デバッグ表示 20 print(*i,len(i)) 21 # 再生隔離 22 sleep(0.8) 23 24 # マウスの左クリック処理 25 if len(i)==2: 26 pyautogui.click(int(i[0]),int(i[1])) #クリック 27 # マウスの右くりっく処理 28 elif len(i)==3: 29 pyautogui.rightClick(int(i[0]),int(i[1])) #右クリック 30 # キーボードのキー入呂処理 1つずつ 31 elif len(i)==1: 32 pyautogui.typewrite(i) 33 # キーボードのエンター処理 不安定 34 elif len(i)==0: 35 pyautogui.typewrite(['enter']) 36 37

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

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

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

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

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

guest

回答1

0

ベストアンサー

おすすめライブラリ

マウスの記録&再生ならこんな感じ。

python

1import mouse 2 3events = mouse.record() # 右クリックするまで記録 4mouse.play(events)

投稿2019/09/03 08:46

編集2019/09/03 08:46
YouheiSakurai

総合スコア6142

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

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

Untitled_Sample

2019/09/03 09:59

ImportError: You must be root to use this library on linux. sudo権限が無いと実行できない様ですが、ソースコードから権限を与える記述は どの様にすれば良いでしょうか?
YouheiSakurai

2019/09/03 10:23

「ソースコードから権限を与える記述」というのがちょっと理解できないです。「sudo python3 スクリプト名.py」という様に実行するのとは違うんでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問