Tkinter命令Lambda函数修改变量

时间:2015-11-28 15:13:39

标签: python python-3.x lambda tkinter

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

在任何时候,"当前记录"在屏幕上显示的是变量current_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))

虽然该功能可以完成其工作并将新记录加载到表单中,但它不会重新分配" current_record"对于新的竞争对手,如该功能的第三行所示。

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

1 个答案:

答案 0 :(得分:0)

除非显式声明您在函数全局中修改的变量,否则即使存在具有相同名称的全局变量,它也默认为本地,因此{ {1}}是一个局部变量。将current_record添加到global current_record函数的开头并将函数参数重命名为next_record将解决此问题。