如何获取TK按钮命令以获取带变量的参数(Python)

时间:2012-10-28 22:44:07

标签: python tkinter tk

这让我困扰了一个多星期。正如标题所示,我如何获得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是一个无法硬编码的变量。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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

您可能需要对isLeft执行相同的操作,除非这是静态值。