【问题标题】:tkk passing parameters to callbacks [duplicate]tkk将参数传递给回调[重复]
【发布时间】: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) 如何将回调函数绑定到按钮但让按钮提供特定的构造函数参数?

【问题讨论】:

    标签: python tkinter python-3.5


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

    【讨论】:

    • 最简单的解决方案是将:command=ScanActiveProjects(True) 更改为:command= lambda: ScanActiveProjects(False)
    猜你喜欢
    • 2016-12-09
    • 2014-03-25
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多