Linux上で、自動実行させるには、いくつかの大切な事があったのでメモメモ
・ウインドウ操作は、xdotoolを利用
・これを動かすには、subprocess.check_outputを使う
参考
xdotool コマンド全26実例 CONSOLE DOT LOG カナダLOVE!なフリーランス・プログラマーのブログ!
import PySimpleGUI as sg
from subprocess import *
from pyautogui import *
from time import sleep
print(size())
print(position())
Popen("gedit")
sleep(1)
o=check_output("xdotool search --name '\u7121\u984c' windowmove 1 1",shell=True)
sleep(1)
print(o)
sleep(1)
moveTo(100,200)
sleep(1)
click()
sleep(1)
#write("abc")
hotkey("ctrl","q")
#press("enter")
#hotkey("alt","c")
numbers = range(1, 6)
# 非インタラクティブ(communicate()を用いて一度にすべて送信)
p = subprocess.Popen(['python', 'calc.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 改行コードで連結
str_nums = '\n'.join(map(str, numbers))
o, e = p.communicate(input=str_nums.encode())
print(o.decode())
'''
n = 1
+ 2 = 3
- 3 = -2
* 4 = 4
/ 5 = 0.2
'''
# インタラクティブ(.stdin.write()を駆使して一行ずつ送信)
p = subprocess.Popen(['python', 'calc.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for n in numbers:
# 数字を送る
p.stdin.write(str(n).encode())
# 改行を送る(input()に対しての入力なので必須)
p.stdin.write('\n'.encode())
# バッファの解放(大事)
p.stdin.flush()
# 結果を一行読む(複数行にわたる場合はwhile文を使う)
print(p.stdout.readline().decode().strip())
'''
n = 1
+ 2 = 3
- 3 = -2
* 4 = 4
/ 5 = 0.2
'''
0 件のコメント:
コメントを投稿