标签系统的问题:它是如何工作的?

2024-09-30 22:27:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python3中的Tkinter编写一个扫雷艇。现在看看代码:

# -*- coding: utf-8 -*-
from tkinter import *
from random import *

color = "red"
case=[]
fenetre = Tk()

gamezone_x = 10
gamezone_y = 10
mines = 10

def leftclick(event):
    print("Leftclicked at", event.x, event.y)

def rightclick(event):
    print("Rightclicked at", event.x, event.y)

def mines_gen(mines):
    while(mines>0):
        x=randint(0,9)
        y=randint(0,9)
        print(case[x][y])
        Canvas.config(case[x][y], bg="blue")
        Canvas.addtag(case[x][y], "bomb")
        mines-=1

for x in range(gamezone_x):
    case.append([])
    for y in range(gamezone_y):
        case[x].append(Canvas(fenetre, width=20, heigh=20,bg="red"))
        case[x][y].grid(row=x, column=y)
        case[x][y].bind("<1>", leftclick)
        case[x][y].bind("<3>", rightclick)

mines_gen(mines)

fenetre.mainloop()

我可以生成我的红色画布矩阵和改变蓝色随机画布。但是当我有了我的“addtag”(在mine\u gen定义中)时,程序不工作了,说 TclError:错误#args:应该是“.”。!canvas22 addtag标签搜索命令?arg…?“ 我很确定我找不到标签是如何工作的,以及如何创建/删除/查找它们,文档也帮不了我!你知道吗

如何将标签“bomb”添加到我的蓝色画布上? 谢谢你的回答,对不起我的英语,我是法国人!你知道吗


Tags: fromimporteventdef画布red标签gen
1条回答
网友
1楼 · 发布于 2024-09-30 22:27:44

下面是对代码的一个简单更改,它将设置随机地雷。你知道吗

你不能一直打电话给Canvas()。你所做的就是每次创建新的画布。相反,您应该调用在case列表中创建的canvas对象。试试下面的,让我知道如果这是你试图做的。你知道吗

# -*- coding: utf-8 -*-
import tkinter as tk
from random import randint
color = "red"
case = []
fenetre = tk.Tk()

gamezone_x = 10
gamezone_y = 10
mines = 10

def leftclick(event):
    print("Leftclicked at", event.x, event.y)

def rightclick(event):
    print("Rightclicked at", event.x, event.y)

def mines_gen(mines):
    while(mines > 0):
        x=randint(0, 9)
        y=randint(0, 9)
        print(case[x][y])
        case[x][y].config(bg="blue")
        case[x][y].addtag("bomb", "closest", x, y)
        mines -= 1

for x in range(gamezone_x):
    case.append([])
    for y in range(gamezone_y):
        case[x].append(tk.Canvas(fenetre, width=20, heigh=20, bg="red"))
        case[x][y].grid(row=x, column=y)
        case[x][y].bind("<1>", leftclick)
        case[x][y].bind("<3>", rightclick)

mines_gen(mines)

fenetre.mainloop()

相关问题 更多 >