2016-06-09 2 views
0

У меня есть сценарий, написанный на Python3.5, с модулем pyautogui, чтобы отметить область на экране, а затем разбить ее на четыре квадранта. Я делаю это, чтобы ускорить поиск при последующих сценариях. Чтобы проверить, получаю ли я квадранты, у меня есть вызов команды скриншота в функции getQuad1. Когда он запускается, он получает весь экран, а не только квадрант, который я обозначил.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 запускает и получает полную рабочую область пространства, в основном размеры окна браузера. Затем есть сценарий, называемый getWaHWorkSpace, который затем вычисляет ширину, высоту и половину каждого для последующего использования.

У меня тогда есть функция getQuad1, которая делает математику, необходимую для обозначения верхнего левого квадранта экрана. Есть еще три функции, которые получают другие квадранты, они идентичны функции getQuad1, сохраняемой для используемых переменных.

Любые советы или мысли относительно этого были бы очень оценены!

ответ

0

После некоторого бега я обнаружил, что это работает в Windows, но не в Linux (по крайней мере, Ubuntu 16.04). Я сохранил код тот же, и он работает как ожидается в Windows.

Смежные вопросы