Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tkinter Python程序中函数参数的名称错误_Python_User Interface_Tkinter_Button_Nameerror - Fatal编程技术网

Tkinter Python程序中函数参数的名称错误

Tkinter Python程序中函数参数的名称错误,python,user-interface,tkinter,button,nameerror,Python,User Interface,Tkinter,Button,Nameerror,我正在尝试为我的代码构建一个Tkinter GUI,在给定的条件下,它能返回最少的硬币数量 数量我在代码中使用了lambda函数,因为我知道不能用Tkinter传递参数 我为那些长代码的家伙提前道歉。我花了几个小时在上面,不知道该怎么做来修复它。我感谢你能给我的任何帮助或建议 这是我得到的错误,还有我的代码: NameError: name 'stack' is not defined 问题是这条线, button1 = tk.Button(text='Calculate',command=

我正在尝试为我的代码构建一个Tkinter GUI,在给定的条件下,它能返回最少的硬币数量 数量我在代码中使用了lambda函数,因为我知道不能用Tkinter传递参数

我为那些长代码的家伙提前道歉。我花了几个小时在上面,不知道该怎么做来修复它。我感谢你能给我的任何帮助或建议

这是我得到的错误,还有我的代码:

NameError: name 'stack' is not defined

问题是这条线,

button1 = tk.Button(text='Calculate',command= lambda: print(stack))
堆栈变量未定义,但在函数print中(警告,print是python中内置的函数,请勿使用函数的此名称)

编辑:

返回堆栈。追加(…)

返回值为
None

>>> s = []
>>> print(s.append("test"))
None

在您的python解释器中进行测试。

要解决此问题,只需将

stack=[]
在代码开头的函数之外,或者在本例中,可以这样做:

stack=[]
def solve():
#代码的其余部分
问题是您在函数中定义它,这意味着该变量是该函数的局部变量,因此其他函数无法访问它(其他选项是使用
global
我猜,但我不确定具体如何定义,可能这里甚至不是这样)

另外,正如@Fred提到的,不要将
print
用作函数名,因为它已经是内置的


还有一个更大的问题是,虽然它不会抛出任何错误,因为它可以工作,但它不会做什么,因为如果按钮的
命令
参数中使用函数,则从函数返回值是毫无意义的,因为您无法获得返回值。

这不是答案,你只是陈述了OP已经知道的东西,但没有解决问题(可能除了我同意不应该使用的打印和返回内容,但不是真的,因为它实际上只是执行附加部分,然后停止函数,所以这也没什么问题)@Fred感谢你给我的建议,更改我的函数名!要解决此问题,只需将
stack=[]
放在函数之外。感谢您的帮助!我还使用了print语句而不是return语句,并输出了我想要的结果。
button1 = tk.Button(text='Calculate',command= lambda: print(stack))
>>> s = []
>>> print(s.append("test"))
None