Python Tkinter命令Lambda函数修改变量

Python Tkinter命令Lambda函数修改变量,python,python-3.x,lambda,tkinter,Python,Python 3.x,Lambda,Tkinter,我的应用程序是一个从数据库填充字段的表单。我正在编写在这些记录之间导航的函数。 我在编写“下一个记录”函数时遇到问题 在任何给定的时间,屏幕上显示的“当前记录”都是一个变量Current\u Record def next_record(current_record): current_index = current_record.index current_record = Competitor(competitors[current_index + 1], current_i

我的应用程序是一个从数据库填充字段的表单。我正在编写在这些记录之间导航的函数。 我在编写“下一个记录”函数时遇到问题

在任何给定的时间,屏幕上显示的“当前记录”都是一个变量
Current\u Record

def next_record(current_record):
    current_index = current_record.index
    current_record = Competitor(competitors[current_index + 1], current_index + 1)
    print(current_record.index)
    populate_form(current_record)
和我调用此函数的按钮:

action_button_6 = tkinter.Button(group_buttons, text='>>', width=5,
                                 command=lambda: next_record(current_record))
尽管函数完成了它的工作并将新记录加载到表单中,但它不会像函数第三行中所示那样将“当前_记录”重新分配给新的竞争对手


如何在此函数中修改变量?

除非明确声明在全局函数中修改的变量,否则即使存在同名的全局变量,它也默认为局部变量,因此当前记录是局部变量。将
global current_record
添加到
next_record
函数的开头,并将函数参数重命名为
old_record
可以解决这个问题。

next_record
中的
current_record
是局部变量,与
lambda
中的
current_record
无关。如果你在
下一条记录中为
当前记录
分配新元素,你将失去与原始记录的联系。我知道,我给它们都起了同样的名字,这让我的生活变得有点困难。我的问题是如何修改传递给lambda中函数的变量?如果可以,则必须更改现有元素中的值,如
current\u record.some\u variable=competitors[current\u index+1]
current\u record.index=current\u index+1
。那么更改当前实例的索引,然后执行一些内部类函数来重新初始化?