这让我困扰了一个多星期。正如标题所示,我如何获得TK按钮命令来接受带变量的参数?
以下是我正在使用的确切代码:
i=0
# Make a Staff list button
staffButton = Button(masterFrame,
text='Staff List',
width=20,
justify=LEFT,
#command=lambda:self.openTabHere(isLeft,STAFF_LIST_TAB))
command=lambda:self.openTabHere(isLeft,i))
staffButton.grid(column=0, row=1)
# Make a course list button
courseButton = Button(masterFrame,
text='Course List',
width=20,
justify=LEFT,
#command=lambda:self.openTabHere(isLeft,COURSE_LIST_TAB))
command=lambda:self.openTabHere(isLeft,i))
courseButton.grid(column=0, row=0)
i=1
请注意,如果我使用注释(硬编码)命令,它将按预期工作。但是,如果我使用代码 not 注释,使用变量i,两个按钮最终都会显示i = 1的命令。
该命令是否在运行时获取变量i?如果是这样,或者出于其他原因,我该怎样做才能完成我想要做的事情?
这是因为我为每个工作人员做了类似的事情;一个for循环打算有一个按钮打开一个标签,该标签的参数中的人员ID是一个无法硬编码的变量。
提前致谢。
答案 0 :(得分:1)
您需要在创建窗口小部件时绑定i的值:
staffButton = Button(..., command=lambda btn=i:self.openTabHere(isLeft,btn))
您可能需要对isLeft
执行相同的操作,除非这是静态值。