我正在将我编写的一个游戏移植到一个用户友好的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不这样做。我确保(我想……)标签被正确地分配了
有人愿意帮我吗?提前谢谢
当您绑定到矩形时,当您单击属于矩形的某个像素时,会触发事件。因为您使用的是
fill=""
,所以矩形的内部没有像素。如果将鼠标放在边框上,代码实际上可以工作你应该给你的矩形填充颜色,如果你想能够点击他们。或者,您可以将一个绑定添加到画布,然后使用画布的功能查找距离单击最近的对象
另外,如果您想为每个矩形添加绑定,那么需要在循环中移动
tag_bind
相关问题 更多 >
编程相关推荐