Tkinter 如何使用嵌套函数的结果?

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

我有一个家庭作业,我正在用Python 3.7.x创建一个程序,我需要计算从a点到B点的不同路径的数量。现在我正在做一个简单的Tkinter GUI,它使用用户输入(从1到8)创建一个正方形的按钮网格(请参见下图)

然后我创建了一个函数,其中保存了第一个单击按钮和第二个按钮的坐标,这是嵌套函数:

          ``` 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
仍然需要实际返回一些东西,以使其按预期工作。