Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取TK按钮命令以接收带有变量的参数(Python)_Python_Tkinter_Tk - Fatal编程技术网

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

如何获取TK按钮命令以接收带有变量的参数(Python),python,tkinter,tk,Python,Tkinter,Tk,这件事困扰了我一个多星期。如标题所示,如何获取TK按钮命令以接收带有变量的参数 下面是我使用的确切代码: i=0 # Make a Staff list button staffButton = Button(masterFrame, text='Staff List', width=20, justify=LEFT,

这件事困扰了我一个多星期。如标题所示,如何获取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作为一个不能硬编码的变量存在于参数中


提前感谢。

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

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

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

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

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

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

我刚试过,发现这不是解决办法。当我尝试运行它时,我得到了一个无效的语法。是的,我只是注意到它是python而不是tcl,并删除了我愚蠢的评论。注意,如果你发布了一个独立的程序,而不是上面的摘录,其他人可能会尝试一下并发现问题谢谢你的提示;主要的问题是我不想做一个不能完全代表我的问题的独立程序。我担心我会遗漏一些无法传达根本问题的细节:我只是尝试了一下,发现这不是解决方案。当我尝试运行它时,我得到了一个无效的语法。是的,我只是注意到它是python而不是tcl,并删除了我愚蠢的评论。注意,如果你发布了一个独立的程序,而不是上面的摘录,其他人可能会尝试一下并发现问题谢谢你的提示;主要的问题是我不想做一个不能完全代表我的问题的独立程序。我担心我会遗漏一些无法传达根本问题的细节:静坐有效!!!!!!我的地狱一周差不多结束了。staffButton=Button(…,command=lambda i=i:self.openTabHere(isLeft,i))这就完成了。接下来的问题:正如你所说,我需要对isLeft执行此操作,但合适的语法是什么?@narutoreplicate:语法看起来像
lambda=isLeft,B=I:self.openTabHere(A,B)
注意到模式了吗?将lambda视为一个没有名称的函数。
lambda
之后和
之前的部分:
是参数及其默认值的列表,就好像您已经定义了一些函数(a=“abc”,B=“123”)。非常有趣的东西。非常感谢你的帮助!它起作用了!!!!!!我的地狱一周差不多结束了。staffButton=Button(…,command=lambda i=i:self.openTabHere(isLeft,i))这就完成了。接下来的问题:正如你所说,我需要对isLeft执行此操作,但合适的语法是什么?@narutoreplicate:语法看起来像
lambda=isLeft,B=I:self.openTabHere(A,B)
注意到模式了吗?将lambda视为一个没有名称的函数。
lambda
之后和
之前的部分:
是参数及其默认值的列表,就好像您已经定义了一些函数(a=“abc”,B=“123”)。非常有趣的东西。非常感谢你的帮助!