Tkinter 如何使用嵌套函数的结果?
我有一个家庭作业,我正在用Python 3.7.x创建一个程序,我需要计算从a点到B点的不同路径的数量。现在我正在做一个简单的Tkinter GUI,它使用用户输入(从1到8)创建一个正方形的按钮网格(请参见下图) 然后我创建了一个函数,其中保存了第一个单击按钮和第二个按钮的坐标,这是嵌套函数:Tkinter 如何使用嵌套函数的结果?,tkinter,python-3.7,Tkinter,Python 3.7,我有一个家庭作业,我正在用Python 3.7.x创建一个程序,我需要计算从a点到B点的不同路径的数量。现在我正在做一个简单的Tkinter GUI,它使用用户输入(从1到8)创建一个正方形的按钮网格(请参见下图) 然后我创建了一个函数,其中保存了第一个单击按钮和第二个按钮的坐标,这是嵌套函数: ``` startPoint = None endPoint = None clicks = 0
``` startPoint = None
endPoint = None
clicks = 0
def SaveCoord(x,y):
def returnFunction():
global clicks
if clicks == 0:
global startPoint
startPoint = [x,y]
print(startPoint)
clicks+=1
elif clicks == 1:
global endPoint
endPoint = [x,y]
print(endPoint)
clicks+=1
else:
print("You have already selected your points!")
return returnFunction ```
为了计算路径数,我需要得到X和Y的差
存储为startPoint
和endPoint
列表。我该怎么做?我无法访问returnFunction()
值。每次尝试访问时,我都会收到一个'NoneType'对象不可订阅的错误
如果需要,我可以发布整个代码
提前谢谢这里有几个问题:
1) 实际上,您并没有调用returnFunction
,只是在return语句中引用了该函数。将该行更改为returnFunction()
2) returnFunction
实际上并不返回任何内容,它只是打印,因此即使您正在调用它,返回值也将是None。
更新它,以返回您希望在以后参考的值,并将其添加或代替打印。或者,如果您试图使用这些函数,以便SaveCoord
返回一个以后可以调用的新函数,您可以这样引用它newFunc=SaveCoord(1,2)
,然后调用newFunc()
或SaveCoord(1,2)(
,并将结果存储在一个变量中。returnFunction
名称仅存在于saveCoord
的范围内,因此以后不能使用该名称引用它。无论哪种方式,returnFunction
仍然需要实际返回一些东西,以使其按预期工作。