我有两个关于python的问题,假设下面的代码:
这是代码行:
filemenu.add_command(label="update...", command=CreateWindow)
答案 0 :(得分:8)
执行command=CreateWindow(some_argument)
将导致CreateWindow立即执行,并且它返回的任何内容都将用作command
的参数。 Python不够聪明,不能猜测你想让CreateWindow成为回调而不是它的返回值。
使用lambda表达式:filemenu.add_command(label="update...", command=lambda: CreateWindow(some_arguments, go_here))
这实际上相当于:
def f():
CreateWindow(some_arguments, go_here)
filemenu.add_command(label="update...", command=f)
......但要短得多。