【发布时间】:2020-03-16 17:43:38
【问题描述】:
我提供了可以重现的最少错误代码。
我正在使用 python 3。
我有一个 printValue 函数,它输出它接收到的参数。我还有一个值列表。
使用 tkinter,我创建了一个框架,并根据值在框架内生成一个表格。当我必须添加一个输出行号的按钮时,问题就出现了。每个按钮在应该输出相应的行号时输出值 5。
import tkinter as tk
def printValue(param):
print(param)
Values=[[1],[2],[3],[4],[5]]
mainGuiWindow = tk.Tk()
frame = tk.Frame(mainGuiWindow)
frame.pack()
def refreshFrame():
global frame
global Values
frame.destroy()
frame = tk.Frame(mainGuiWindow)
frame.pack()
tk.Label(frame,text="Sl. No").grid(row=0,column=0)
tk.Label(frame,text="Value").grid(row=0,column=1)
tk.Label(frame,text="Print Entry").grid(row=0,column=2)
numberOfEntries = 0
for entry in Values:
numberOfEntries += 1
tk.Label(frame,text=numberOfEntries).grid(row=numberOfEntries,column=0)
tk.Label(frame,text=entry[0]).grid(row=numberOfEntries,column=1)
tk.Button(frame, text="Print",command=lambda: printValue(numberOfEntries)).grid(row=numberOfEntries,column=2)
refreshFrame()
mainGuiWindow.mainloop()
问题似乎是按钮中的函数参数绑定到变量'numberOfEntries'
如何在按钮中传递参数以使函数打印正确的值?我不想修改函数定义。我需要更改按钮调用它的方式。
【问题讨论】:
-
@AbhayAravinda 阅读Python and Tkinter lambda function
标签: python python-3.x tkinter