在使用tkinter Button小部件在python中传递参数时需要帮助

时间:2018-08-10 12:59:28

标签: python button tkinter parameter-passing

我正在读取包含51行4列的csv文件。我将其存储在尺寸为51 X 4的2D列表中。我的目标是创建51个按钮,并每次将元素的值传递到由此创建的列表的list [i] [1]作为其参数。但是,在此代码中,list [50] [1]的值已在所有51个按钮中传递。如何将所需的唯一列表[i] [1]值作为参数传递给第ith个按钮?

这是我的代码。请找到其中的错误,非常感谢您的帮助。谢谢。

file = open('stocklist.csv', 'r')
reader = csv.reader(file)

stocks = []
for line in reader:
    w = line[0]
    x = line[1]
    y = line[2]
    z = line[3]

    stocks.append([w, x, y, z])

height = 51
width = 4

for i in range(height):
    b = tk.Button(f, text=stocks[i][1], command=lambda: open_link(stocks[i][1]))
    b.grid(row=i, column=1)
    print(b)

1 个答案:

答案 0 :(得分:1)

您可以使用functool的partiallink):

b = tk.Button(f, text=stocks[i][1], command=partial(open_link,stocks[i][1])