这个问题在这里已经有了答案:
tkinter使用lambda在循环中分配按钮命令(1个答案)
昨天关门了。
def run_game(self):
root = Tk()
for i in range(0, 6):
for j in range(0, len(self.board[i])):
button = Button(root, text="0", height=2, width=10, command=lambda: self.if_clicked_square(i,j))
button.place(x=25 + (100 * j), y=100 + (100 * i))
# button.pack()
self.buttonsList[i].append([button])
root.mainloop()
上面的功能是使用tkinter创建一个包含28个按钮的gui板。我使用嵌套for循环创建每个按钮,并将其放置在板上和按钮列表中。为每个按钮设置命令时会出现问题。我想使用这个函数 if_clicked_square(i,j)
为了命令。该函数使用i和j索引进行操作。问题是循环完成后每个按钮的命令都是无效的 if_clicked_square(5,2)
,正好是循环的最后一个索引。我希望每个按钮都有一个基于for循环索引的唯一命令。例如,其中一个按钮应具有命令 if_clicked_square(0,0)
,一个人应该有这个命令 if_clicked_square(1,0)
,以此类推,适用于所有28个按钮。我能得到一些技巧来完成这个任务吗?
1条答案
按热度按时间4jb9z9bj1#
您需要在中创建一个局部变量
lambda
使用循环时