为什么我的画布没有装订好?

2024-10-03 00:18:59 发布

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

我正在将我编写的一个游戏移植到一个用户友好的GUI中。请容忍我,因为这是我第一次和特金特玩

一旦玩家输入他想玩的行/列的数量,我们就画出游戏板

如果你看一下下面的代码,你会发现我以‘row,col’的格式为我们创建的每个正方形分配了标签

我调用了.tag\u bind到第0行第3列中的正方形。单击时,它应该调用\u canvas\u clicked函数。但是,当我运行程序时,当我点击那个方块时,它不会响应或做任何事情

    gameframe = tkinter.Frame(master = self._dialog_window)
    gameframe.grid(row = 2, column = 0, columnspan = 2, padx = 10, pady = 10, sticky = tkinter.W)

    boardWidth = cols * self._sqheight
    boardHeight = rows * self._sqheight
    self.gameboard = Canvas(gameframe, width = boardWidth, height = boardHeight, bg = 'green')
    self.gameboard.grid(row = 0, column = 0)

    for row in range(rows):
        for col in range(cols):
            top = row * self._sqheight
            left = col * self._sqheight
            bottom = row * self._sqheight + self._sqheight -1
            right = col * self._sqheight + self._sqheight -1
            rect = self.gameboard.create_rectangle(left,top,right,bottom,outline='gray',fill='',tags="(row, col)")
            self.gameboard.itemconfig(rect, tags='{},{}'.format(row, col))

    self.gameboard.tag_bind('0,3', '<ButtonPress-1>', self._on_canvas_clicked)

self.gameboard.bind('<Button-1>', self._on_canvas_clicked)按预期工作。但tagèu bind不这样做。我确保(我想……)标签被正确地分配了

有人愿意帮我吗?提前谢谢


Tags: self游戏bindtkintertagcol标签grid
1条回答
网友
1楼 · 发布于 2024-10-03 00:18:59

当您绑定到矩形时,当您单击属于矩形的某个像素时,会触发事件。因为您使用的是fill="",所以矩形的内部没有像素。如果将鼠标放在边框上,代码实际上可以工作

你应该给你的矩形填充颜色,如果你想能够点击他们。或者,您可以将一个绑定添加到画布,然后使用画布的功能查找距离单击最近的对象

另外,如果您想为每个矩形添加绑定,那么需要在循环中移动tag_bind

相关问题 更多 >