我正在尝试在 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)
我不确定如何让我的 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)