tkk将参数传递给回调[重复]

Posted

技术标签:

【中文标题】tkk将参数传递给回调[重复]【英文标题】:tkk passing parameters to callbacks [duplicate] 【发布时间】:2017-01-18 08:43:51 【问题描述】:

我正在开发一个 tkinter ttk 界面来自动化/促进一些相对复杂的报告。

我有一个跨目录执行复杂数据扫描的函数。要执行该功能,请单击工具栏中的按钮小部件:

fileMenu.add_command(label="Generate Report",command=ScanActiveProjects)

但是,我想通过添加一个附加参数 (simple=True/False) 来重用此函数中的代码,以便我可以将函数的部分和完整执行映射到各个按钮。

我认为我可以像这样相当简单地做到这一点:

fileMenu.add_command(label="Generate Management Report",command=ScanActiveProjects(simple=True)
fileMenu.add_command(label="Generate Detailed Report",command=ScanActiveProjects(simple=False)

这样做的结果是在启动程序时自动按下按钮 - 我不明白。所以我的问题是:

1)为什么在添加(simple=True)/(simple=False)参数时按钮会自动按下?

2) 如何将回调函数绑定到按钮但让按钮提供特定的构造函数参数?

【问题讨论】:

【参考方案1】:
    在您对add_command 中的SendActiveProjects 进行函数调用后,会自动按下该按钮。 您可以使用functools.partial 做您想做的事。

【讨论】:

最简单的解决方案是将:command=ScanActiveProjects(True) 更改为:command= lambda: ScanActiveProjects(False)

以上是关于tkk将参数传递给回调[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将参数传递给 UIcontrol 回调函数

将额外参数传递给 usort 回调

Python:如何将参数传递给线程作业(回调)

将 VB 函数回调作为参数传递给 .NET

角度拖放-如何将参数传递给onStart回调函数

如何将多个重复的参数传递给 CUDA 内核