我正在尝试将 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 个项目,因此我需要能够将其用于许多不同数量的项目。
调用函数
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 值。
任何帮助都会很棒。
所以我通过改变调用函数的方式解决了这个问题。
代替:
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()
这在创建时传递循环值时调用了函数。