在棋盘上移动一个椭圆形

时间:2017-04-11 08:40:11

标签: python python-3.x tkinter tkinter-canvas

我有一个有32个可移动物体的棋盘。那些可移动的物体是圆圈,上面有一个字母。

boardGUI.create_oval(x0 + tileSize * j + ((1/5)*tileSize), y0 + tileSize * i + ((1/5)*tileSize), x0 + tileSize * (j + 1) - ((1/5)*tileSize),y0 + tileSize * (i + 1) - ((1/5)*tileSize), fill = "#000") boardGUI.create_text(x0 + tileSize * j + (tileSize/2), y0 + tileSize * i +(tileSize/2),text = matrix[i][j][0].upper(),font = ("Helvetica", 12, "bold") , fill = "#FFF")

因此我的问题是:如何同时移动圆圈和字母? (首先点击应该获得该片段的坐标,第二次点击应该将片段移动到新坐标)

我尝试使用tkinter的find_overlapping和find_closest方法,但find_overlapping给了我一个包含3个元素的元组,find_closest只返回一个元素,所以我不知道该怎么做。

提前感谢您的帮助:)

1 个答案:

答案 0 :(得分:2)

您可以通过标签系统一次移动瓷砖和字母。这可以在创建瓷砖和字母对象时,在对象参数中添加, tag = "tile{}-{}".format(i, j)或类似样式的东西。

使用您的代码,这可能如下所示:

boardGUI.create_oval(... , tag = "tile{}-{}".format(i, j) )

boardGUI.create_text(... , tag = "tile{}-{}".format(i, j) )

您的现有代码在省略号中是相同的。

这(假设你的i和j增量是正确的)将为你提供一种同时在瓷砖上移动瓷砖和字母的方法,可能通过boardGUI.move("tile{}-{}".format(i, j), x, y)来格式化i和j值你希望移动的瓷砖板上的位置,当然x / y值是你想要移动瓷砖/字母的数量。

希望这有帮助!