tkinter で楕円形を作成するこのコードを書きました。マウスでクリックすると、楕円はそれ自体の新しい座標を作成し、脈動を開始します。
1. 楕円はデフォルトで作成されます 2. クリックすると、関数「クリック」が呼び出されます 3. クリック関数は新しい座標を生成し、楕円を描画してから、脈動するループ効果を開始します。4.これで、脈動する楕円をもう一度クリックして、楕円を新しい場所に移動し、その新しい楕円を再びループさせることができます(脈動)。
def click(event):
pick = 2
counter = 0
esimene_x1 = randint(0, w-100)
esimene_y1 = randint(0, h-100)
teine_x1 = esimene_x1
teine_y1 = esimene_y1
canvas.coords(circle1, esimene_x1, esimene_y1, teine_x1, teine_y1)
pulsate(esimene_x1, esimene_y1, teine_x1, teine_y1, pick, counter)
def pulsate(esimene_x1, esimene_y1, teine_x1, teine_y1, pick, counter):
if pick % 2 == 0:
esimene_x1 -= 1
esimene_y1 -= 1
teine_x1 += 1
teine_y1 += 1
counter += 1
if counter == 40:
pick += 1
elif pick % 2 != 0:
esimene_x1 += 1
esimene_y1 += 1
teine_x1 -= 1
teine_y1 -= 1
counter -=1
if counter == 0:
pick += 1
s = esimene_x1, esimene_y1, teine_x1, teine_y1, pick, counter
canvas.coords(circle1, esimene_x1,esimene_y1, teine_x1,teine_y1)
raam.after(50, pulsate, *s)
ただし、脈動する楕円形をもう一度クリックすると、バグが発生し、ループする脈動効果の前の機能がまだ機能しているように見え、新しい脈動が別の座標で始まります。だから、私の質問は、その関数が関数内にあり、最初の関数をもう一度開始したいときに、関数のループ(脈動)を停止するにはどうすればよいかということです。(新しい座標を作成し、脈動を開始します)
実行して何が起こるかを正確に確認できるファイルは次のとおりです。
https://mega.co.nz/#!e5pj0brC!QW6R4X9WTshOCh3FTybLrQu_oI0OOU6wL5QI61punUE
また、このバグの原因と思われるものを他に見つけた場合は、お知らせください。Pythonのスレッドやクラスの知識はまだありませんが、それしか解決方法がなければ教えてください!それ以外の場合は、より簡単な方法で管理できれば幸いです!
どうもありがとうございました!