Python 将 while 值传递给使用 lambda 的函数

问题描述 投票:0回答:1

我正在尝试将 while 值传递给函数,这样我就不必编写大量代码。

IamInfo 是一个信息数组 例子: 0:JobNo:JobCode:项目列表(再次可变长度)

我的代码:


q=0
while q < len(IamInfo):
  Left.insert(INSERT,IamInfo[q][2]+"\n")
  Left.bind("<Button-1>", lambda event, arg=q: displayMore(arg))
  q += 1

我需要传递 q 值,因为我将它用作在另一个 tkinter 框架中显示最后一列信息的键。 IamInfo 的长度可以从 2 个项目更改为 20 个项目,因此我需要能够将其用于许多不同数量的项目。 enter image description here

调用函数

def displayMore(key):
  print (key)                  <--- so I can see what is passed only
  DisLoop = len(IamInfo[key])
  disx = 4                     <--- defines array element to display
  while disx < DisLoop:
    disText = str(IamInfo[key][disx])+"\n"
    Right.insert(INSERT, disText)
    disx += 1

使用上面的代码,它只传递所有链接的最后一个 q 值。 我尝试了几种不同的方法,但要么失败,要么只是通过了最后一个 q 值。

任何帮助都会很棒。

function lambda parameter-passing
1个回答
0
投票

所以我通过改变调用函数的方式解决了这个问题。

代替:

Left.insert(INSERT,IamInfo[q][2]+"\n")
  Left.bind("<Button-1>", lambda event, arg=q: displayMore(arg))

我用过:

but=Button(Left,width=25,text=IamInfo[q][1],command= partial(displayMore,key=q)).pack()

这在创建时传递循环值时调用了函数。

© www.soinside.com 2019 - 2024. All rights reserved.