1

这让我难过了一个多星期。正如标题所问,我怎样才能让 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

请注意,如果我使用注释(硬编码)命令,它会按预期工作。但是,如果我使用注释的代码和变量 i,则两个按钮都会以 i=1 的命令结束。

是命令在运行时获取变量 i 吗?如果是这样,或者出于其他原因,我能做些什么来完成我想做的事情?

这是因为我对每个员工都做了类似的事情;一个 for 循环,旨在具有打开一个选项卡的按钮,该选项卡具有作为无法硬编码的变量的参数中的人员 ID。

提前谢谢。

4

1 回答 1

1

您需要在创建小部件时绑定 i 的值:

staffButton = Button(..., command=lambda btn=i:self.openTabHere(isLeft,btn))

您可能需要为 做同样的事情isLeft,除非这是一个静态值。

于 2012-10-29T02:30:55.400 回答