2017-04-11 111 views
0

我有一个有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")

所以我的问题是:如何移动,同时圆与信? (第一次点击应该得到一块的坐标,第二次点击应该移动到一块新的坐标)

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

在此先感谢您的帮助:)

+0

请格式化您的代码。 – kennytm

+0

代码只是在这里显示,在画布上有一个圆圈和一个已被绘制来代表一块的字母。 – titi157

+0

你的代码应该提供一个[最小,完整和可验证的例子](http://stackoverflow.com/help/mcve) –

回答

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值是你想要移动瓷砖/字母的量。

希望这会有所帮助!