我正在尝试在 python 中使用其功能之外的变量

I'm trying to use a variable outside of its function in python

我不确定如何让我的 ans_label 访问我的 ans_string,因为它是在函数 ssInterpret() 中定义的。

def ssInterpret():
    #region=(x, y, width, height)
    time.sleep(5)
    myScreenshot = pyautogui.screenshot(region=(400, 320, 800, 500))
    myScreenshot.save(imgPath)

    #reads the image

    img = cv2.imread(imgPath)
    text = pytesseract.image_to_string(img)

    q = text

    #completes the answer search

    results = brainlypy.search(q)
    question = results.questions[0]
    print('URL: '+'https://brainly.com/task/'+str(question.databaseid))
    print('QUESTION:',question)
    print('ANSWER 1:', question.answers[0])
    if question.answers_count == 2:
        print('ANSWER 2:', question.answers[1])

    ans_string = str(question.answers[0])

answer_label = Label(root, text=ans_string)

首先,您的函数需要return答案:

def ssInterpret():
    ...  # most of function elided.
    return ans_string

#then call the function 
ans = ssInterpret()
answer_label = Label(root, text=ans)

在代码顶部将 ans_string 初始化为 ans_string = ""。然后在函数 ssInterpret() 内的 ans_string = str(question.answers[0]) 之前添加一行 global ans_string。在 answer_label = Label(root, text=ans_string) 之前调用 ssInterpret()。您的代码现在应该可以正常工作了。

修改后的完整代码:

ans_string = ""

def ssInterpret():
    #region=(x, y, width, height)
    time.sleep(5)
    myScreenshot = pyautogui.screenshot(region=(400, 320, 800, 500))
    myScreenshot.save(imgPath)

    #reads the image

    img = cv2.imread(imgPath)
    text = pytesseract.image_to_string(img)

    q = text

    #completes the answer search

    results = brainlypy.search(q)
    question = results.questions[0]
    print('URL: '+'https://brainly.com/task/'+str(question.databaseid))
    print('QUESTION:',question)
    print('ANSWER 1:', question.answers[0])
    if question.answers_count == 2:
        print('ANSWER 2:', question.answers[1])

    global ans_string
    ans_string = str(question.answers[0])

ssInterpret()
answer_label = Label(root, text=ans_string)