You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Tkinter扫雷游戏中单独识别每个方块?

实现Tkinter扫雷方块的单独选中功能

要实现单个方块的选中功能,你可以通过绑定鼠标点击事件、识别点击的方块并切换其样式来完成。以下是修改后的完整代码:

from tkinter import *
import random

startX = 0
startY = 0

game = Tk()
game.geometry('600x600')
game.title('扫雷')
canvas = Canvas(game, width=600, height=600, bg='#13cce7')
canvas.pack()

# 存储所有方块的ID,方便后续操作
tiles = []

for j in range(4):
    for i in range(4):
        tile = canvas.create_polygon(
            startX, startY,
            startX+150, startY,
            startX+150, startY+150,
            startX, startY+150,
            fill="grey", outline="black", width="5"
        )
        tiles.append(tile)
        startY += 150
    startY = 0
    startX += 150

def on_tile_click(event):
    # 获取点击位置最近的图形ID
    clicked_item = canvas.find_closest(event.x, event.y)[0]
    if clicked_item in tiles:
        # 获取当前方块的填充颜色
        current_color = canvas.itemcget(clicked_item, 'fill')
        # 切换选中状态:选中时用浅灰,未选中时用深灰
        new_color = '#cccccc' if current_color == 'grey' else 'grey'
        canvas.itemconfig(clicked_item, fill=new_color)

# 绑定鼠标左键点击事件
canvas.bind('<Button-1>', on_tile_click)

game.mainloop()

关键实现说明

  • 存储方块ID:用tiles列表记录所有生成的方块ID,后续可以快速判断点击的图形是否是游戏方块。
  • 点击事件绑定:通过canvas.bind('<Button-1>', on_tile_click)将鼠标左键点击事件关联到处理函数。
  • 识别点击方块:canvas.find_closest(event.x, event.y)能获取点击坐标附近的图形ID,结合tiles列表筛选出有效方块。
  • 切换选中样式:通过itemcget获取当前颜色,itemconfig修改填充色,实现选中/取消选中的视觉反馈。

内容的提问来源于stack exchange,提问作者Nabbster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:44:52