我有一个有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只返回一个元素,所以我不知道该怎么做。
提前感谢您的帮助:)
答案 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值是你想要移动瓷砖/字母的数量。
希望这有帮助!