gpt4 book ai didi

python - 有关将参数传递给 tkinter 按钮命令的更多信息

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:00 25 4
gpt4 key购买 nike

我在一个目录中有许多测试文件。我正在尝试编写一个 GUI 以允许我选择并运行其中之一。

所以,我有一个扫描目录并创建按钮的循环:

    for fnm in glob.glob ('Run*.py'):
tstName = fnm[3:-3] # Discard fixed part of filename
btn = Button (self, text=tstName,
command=lambda: self.test(tstName))
btn.grid (row=rowNum, column=0, pady=2)
rowNum += 1

这正确地创建了我的 GUI,带有标记为 A 和 B 的按钮,但是当我按下标记为 A 的按钮时,它通过了 Btest方法。

我环顾四周,发现了这个问题 How can I pass arguments to Tkinter button's callback command?但答案并没有继续使用具有不同值的相同变量名来配置另一个小部件。 (事实上​​ ,通过将变量名称与小部件名称相关联,它几乎意味着该技术在这种情况下不起作用,正如我所发现的那样。)

非常是 Python 的新手,但是我非常熟悉使用 Tcl/TK 创建这种 GUI,我认识到这个问题 - tstName 的值当我按下按钮时正在传递,但我希望它传递变量在我创建它时的值。我知道如何在 Tcl/Tk 中解决这个问题——我会使用 [list] 定义一个命令字符串在创建时捕获变量的值。

如何在 Python 中执行相同的操作?

最佳答案

您需要在定义 按钮时绑定(bind) tstName 的当前值。按照您的操作方式,tstName 的值将与您按下按钮时的值保持一致。

要在创建按钮时绑定(bind)值,请将 tstName 的值用作 lambda 关键字参数的默认值,如下所示:

btn = Button(..., command=lambda t=tstName: self.test(t))

关于python - 有关将参数传递给 tkinter 按钮命令的更多信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19540130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com