我在一个目录中有许多测试文件。我正在尝试编写一个 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 的按钮时,它会传递B
给该test
方法。
我环顾四周,发现了这个问题如何将参数传递给 Tkinter 按钮的回调命令?但答案并没有继续使用具有不同值的相同变量名来配置另一个小部件。(事实上,通过将变量名称绑定到小部件名称几乎意味着该技术在这种情况下不起作用,正如我发现的那样。)
我对 Python很陌生,但对使用 Tcl/TK 创建这种 GUI 非常熟悉,我认识到这个问题 -tstName
当我按下按钮时正在传递 的值,但我希望它将值传递给变量我创建它时有。我知道如何在 Tcl/Tk 中解决这个问题——我会[list]
在创建时定义一个命令字符串,它会捕获变量的值。
我如何在 Python 中做同样的事情?