2017-04-11 109 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值是你想要移動瓷磚/字母的量。

希望這會有所幫助!