У меня есть сценарий, написанный на 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, сохраняемой для используемых переменных.
Любые советы или мысли относительно этого были бы очень оценены!