2016-06-09 80 views
0

pyautogui 모듈로 Python3.5로 작성된 스크립트를 사용하여 화면의 영역을 기록한 다음 네 사분면으로 나누십시오. 후속 스크립트가 실행되는 동안 검색 속도를 높이기 위해이 작업을 수행하고 있습니다. 내가 사분면을 얻고 있는지 테스트하기 위해 getQuad1 함수에서 screenshot 명령을 호출합니다. 그것이 실행되면, 그것은 내가 지정한 모든 사분면뿐만 아니라 전체 화면을 얻습니다.pyautogui 영역 지정시 전체 화면 찍기

나는 나의 대수학을 오염 시키거나 그것이 작동하는 모듈인지 확실하지 않습니다.

import pyautogui 

def areaSetup(dimTop, dimBot): 
    workSpace = getWorkSpace(dimTop , dimBot) 
    W, H, Hh, Wh = getWaHWorkSpace(workSpace) 
    quad1 = getQuad1(workSpace,W, H, Hh, Wh) 
    quad2 = getQuad2(workSpace,W, H, Hh, Wh) 
    quad3 = getQuad3(workSpace,W, H, Hh, Wh) 
    quad4 = getQuad4(workSpace,W, H, Hh, Wh) 
    return workSpace, quad1, quad2, quad3, quad4 

def getWorkSpace(browTopLeft, browBotRight):# gets the full area of workspace 
    top = pyautogui.locateOnScreen(browTopLeft , grayscale=True) 
    while top is None: 
     top = pyautogui.locateOnScreen(browTopLeft , grayscale=True) 
    print (top) 
    bottom = pyautogui.locateOnScreen(browBotRight , grayscale=True) 
    while bottom is None: 
     bottom = pyautogui.locateOnScreen(browBotRight , grayscale=True) 
    print (bottom) 
    x1, y1, h1, w1 = top 
    x2, y2, h2, w2 = bottom 
    #x2 = x2+w2 
    #y2 = y2+h2 
    print ("initial print" , x1, y1, x2, y2) 
    workSpace = x1, y1, x2, y2 
    print ("Workspace" , workSpace) 
    return workSpace 

def getWaHWorkSpace(workSpace): 
    x1, y1, x2, y2 = workSpace #break it into four parts again 
    W = int(x2 - x1) #get the height 
    H = int(y2 - y1) #get the width 
    Hh = int(0.5 * H) #get mid point of height 
    Wh = int(0.5 * W) #get mid point of width 
    print ("W and H" , W, H, Hh, Wh) 
    return W, H, Hh, Wh 

def getQuad1(workSpace,W, H, Hh, Wh): #North West Quad 
    x1, y1, x2, y2 = workSpace #break it into four parts again 
    q1x1 = int(x1) 
    q1y1 = int(y1) 
    q1y2 = int(y1+Hh) 
    q1x2 = int(x1+Wh) 
    quad1 = q1x1, q1y1, Wh, Hh 
    print("quad1", quad1) 
    pyautogui.screenshot('quad1.png' , region=quad1)#SCREENSHOT TEST 
    return quad1 

은 일반적으로 (이것은 브라우저 형태의 바이올린 설계) 브라우저 창의 왼쪽 상단 모서리와 같은 윈도우의 오른쪽 하단 모서리로 실행됩니다 areaSetup. getWorkSpace가 실행되고 전체 workSpace 영역을 가져옵니다. 기본적으로 브라우저 창의 크기입니다. 그런 다음 getWaHWorkSpace라는 스크립트가 있으며,이 스크립트는 이후 사용을 위해 각각의 너비, 높이 및 반을 계산합니다.

그런 다음 getQuad1이라는 함수가 있는데,이 함수는 화면의 왼쪽 상단 사분면을 지정하는 데 필요한 수학을 수행합니다. 다른 사분면을 얻는 세 가지 함수가 있습니다.이 함수는 사용 된 변수에 대한 getQuad1 함수 저장과 동일합니다.

이 문제에 대한 조언이나 생각은 충분히 감사하겠습니다.

답변

0

주위를 돌아 다니며 실행 한 결과 Windows에서 작동하지만 Linux (Ubuntu 16.04 이상)에서는 작동하지 않는 것으로 나타났습니다. 코드를 동일하게 유지하고 Windows에서 예상대로 작동합니다.