2016-06-09 15 views
0
bezeichnet wird

Ich habe ein Skript in Python3.5 mit dem Modul pyautogui geschrieben, um einen Bereich auf dem Bildschirm zu notieren und dann in vier Quadranten aufzuteilen. Ich mache das, um die Suche zu beschleunigen, während nachfolgende Skripte laufen. Um zu testen, ob ich Quadranten bekomme, habe ich einen Aufruf des Screenshot-Befehls in der Funktion getQuad1. Wenn es ausgeführt wird, erhält es den gesamten Bildschirm, nicht nur den von mir angegebenen Quadranten.pyautogui im ​​Vollbildmodus, wenn die Region als

Ich bin mir nicht sicher, ob ich meine Algebra verschmutzt habe oder ob es das Modul ist, das agiert.

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 

Allgemeines areaSetup mit der linken oberen Ecke des Browserfensters und der unteren rechten Ecke des gleichen Fensters laufen (das ausgelegt ist mit Browser-Formularen zur Geige). getWorkSpace wird ausgeführt und ruft den vollständigen Arbeitsbereich ab, im Wesentlichen die Abmessungen des Browserfensters. Dann gibt es ein Skript namens getWaHWorkSpace, das die Breite, die Höhe und die Hälften von jedem zur anschließenden Verwendung berechnet.

Ich habe dann eine Funktion namens getQuad1, die die Mathematik benötigt, um den oberen linken Quadranten des Bildschirms zu bestimmen. Es gibt drei weitere Funktionen, die die anderen Quadranten erhalten, sie sind identisch mit der Funktion getQuad1, die für die verwendeten Variablen gespeichert ist.

Irgendwelche Ratschläge oder Gedanken in Bezug auf diese würde sehr geschätzt werden!

Antwort

0

Nachdem ich herumgelaufen bin, habe ich festgestellt, dass dies in Windows funktioniert, aber nicht in Linux (zumindest Ubuntu 16.04). Ich behielt den Code gleich und es funktioniert wie erwartet in Windows.