自动调用Button命令

the*_*ame 3 python tkinter

出于某种原因,此按钮在bot_analysis_frame没有按下按钮的情况下自动调用.我猜它是因为这command是一个带参数的函数.

有没有办法让按钮只调用此函数并在按下时传递所需的变量?

Button(topAnalysisFrame, text='OK', command=bot_analysis_frame(eventConditionL, eventBreakL)).pack(side=LEFT)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ark 13

阅读有关传递回调的部分.

您将该函数的结果存储到命令参数而不是函数本身.

我相信这个:

command = lambda: bot_analysis_frame(eventConditionL,eventBreakL)
Run Code Online (Sandbox Code Playgroud)

可能适合你.

  • 请注意,在循环中创建的闭包不会像预期的那样工作(它实际上正常工作,你只需要让闭包真正捕获变量,而不是值).在`[lambda:i(i)for i in range(5)]`中创建的所有函数都将打印出`i`,4的最终值.你可以通过默认参数来解决这个问题,这些参数在定义时被绑定: `lambda i = i:print(i)`会工作. (2认同)