2016-06-08 6 views
0

여기 작업 공간의 크기를 파악하여 자동화 스크립트가 클릭해야 할 위치 또는 데이터를 입력하는 Python 스크립트가 있습니다.NameError : name 'VAR'이 정의되지 않았습니다.

하나의 함수에서 변수를 만들었지 만 다른 변수에서는 액세스 할 수없는 문제가 있습니다. 스크립트를 통해 계속 작업하고 싶은 변수를 반환했지만 정의되지 않았다는 오류가 발생했습니다. 여기

는 지금까지 내 코드입니다 :

(14, 40, 42, 47) 
(694, 774, 342, 44) 
initial print 14 40 738 1116 
Workspace (14, 40, 738, 1116) 
Traceback (most recent call last): 
File "loginPage_001.py", line 35, in <module> 
areaDimensions.areaSetup() 
File "/home/tvorac/python/testBot/areaDimensions.py", line 7, in areaSetup 
getWaHWorkSpace(workSpace) 
NameError: name 'workSpace' is not defined 

나는 간단하게 뭔가를 내려다 오전보기 위해 파이썬 문서를 통해보고 계속 꽤 확신 :

import pyautogui 
import time 
import finder 

def areaSetup(): 
    getWorkSpace('img/dimen/loginDimTop.png' , 'img/dimen/loginDimBot.png') 
    getWaHWorkSpace(workSpace) 
    getQuad1(workSpace,W, H, Hh, Wh) 
    getQuad2(workSpace,W, H, Hh, Wh) 
    getQuad3(workSpace,W, H, Hh, Wh) 
    getQuad4(workSpace,W, H, Hh, Wh) 
    return workSpace, quad1, quad2, quad3, quad4 

def getWorkSpace(browTopLeft, browBotRight): 
    top = pyautogui.locateOnScreen(browTopLeft , grayscale=True) 
    print (top) 
    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 = x2 - x1 #get the height 
    H = y2 - y1 #get the width 
    Hh = 0.5 * H #get mid point of height 
    Wh = 0.5 * W #get mid point of width 
    print ("W and H" , W, H, Hh, Wh) 
    return W, H, Hh, Wh 

내 역 추적은 다음과 같다 내가 잘못한 것을 붙잡을 수 있다면.

감사합니다.

+0

'getWorkSpace()'는 일부 값을 반환하지만, 여러분은'areaSetup()'에서 그 값을 캡쳐하지 않습니다. 아마도 당신은 이것을 원한다 :'workspace = getWorkSpace (...)'? –

답변

0

문제는 파이썬이있다이다 변수 범위는 다른 프로그래밍 언어와 비슷합니다.
변수를 넣는 위치에 따라 해당 범위 내에서만 액세스 할 수 있습니다.이 경우 변수를 생성하는 함수는 getWorkSpace()입니다.

다른 사람들이 액세스하려면 두 가지 중 하나를 수행해야합니다.

import pyautogui 
import time 
import finder 

workspace = None 

def areaSetup(): 
    global workspace 
    ... 

def getWorkSpace(browTopLeft, browBotRight): 
    global workspace 
    ... 
    workSpace = x1, y1, x2, y2 

def getWaHWorkSpace(workSpace): 
    global workspace 
    ... 

를하거나 함수에서 반환 된 값을 사용
어느 쪽이 훨씬 다음과 같이 전역 변수를 만들 수 있습니다. 당신이 return workSpace 한 적이 있기 때문에 충분히

workspace = getWorkSpace('img/dimen/loginDimTop.png' , 'img/dimen/loginDimBot.png') 

getWorkSpace() 때문에 반드시 문제가 당신이 어디를 저장하지 않는다는 것입니다, 당신이 그것을 기대하는 것처럼 작업 공간을 반환합니다.

이 두 가지 옵션은 반환 값을 처리하고 getWorkSpace 기능을 의도 한대로 사용하는 것입니다. 또는 글로벌 변수를 생성하십시오.

0

내 실수를 찾았습니다.

내가 함수 areaSetup (를)

에서 그들을 호출 할 때 변수가 이러한 기능에서오고 있다고 언급하지 않았다 내가 무슨 짓을했는지 :

def areaSetup(): 
    workSpace = getWorkSpace ('img/dimen/loginDimTop.png' , 'img/dimen/loginDimBot.png') 
    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 
관련 문제