使用Python Tkinter开发记忆游戏时如何判断哪个按钮被点击?
记忆游戏按钮点击功能实现
要实现点击按钮后识别对应按钮并修改文本,只需要给循环生成的每个按钮绑定带唯一索引参数的点击回调即可,修改后的完整代码如下:
from tkinter import * import random root = Tk() root.title("Memory Game") buttons = [] # 存储所有按钮 counter = 0 x = 0 y = 0 # 按钮点击回调函数,接收按钮在列表中的下标作为参数 def on_button_click(idx): # 这里可以替换成你记忆游戏需要显示的对应内容,比如配对的图案、文字等 new_text = random.choice("ABCDEFGHIJKLMNOPQRSTUVWXYZ") buttons[idx].config(text=new_text) # 生成6*6的按钮网格 for l in range(0,6): x = 0 y += 1 for i in range(0,6): # 绑定点击回调,用idx=counter规避lambda循环的延迟绑定问题 buttons.append(Button(root, text="???", command=lambda idx=counter: on_button_click(idx))) buttons[counter].grid(column=x, row=y) counter += 1 x += 1 root.mainloop()
关键改动说明
- 新增了
on_button_click回调函数,传入按钮在buttons列表中的下标即可定位到被点击的按钮,可自由修改文本、颜色等任意属性 - 生成按钮时通过
lambda idx=counter: on_button_click(idx)给每个按钮绑定独立的回调参数,避免循环生成时所有按钮都拿到最后一个下标的常见问题 - 如果后续需要实现配对判断逻辑,只需要在回调里增加全局变量记录上一次点击的按钮下标,对比两次点击的文本是否一致即可
内容的提问来源于stack exchange,提问作者FallenTwins3
相关产品推荐
相关产品推荐

