我编写了这段代码,它在 tkinter 中创建了一个椭圆。当用鼠标点击时,椭圆会为自己创建新的坐标,然后开始跳动。
它是这样的: 1.默认创建椭圆 2.单击时,调用函数“click” 3.click函数生成新坐标,绘制椭圆,然后开始脉动循环效果。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中的线程和类的知识,但如果这是唯一的解决方案,请告诉我!如果可以使用一些更简单的方法进行管理,其他人将不胜感激!
非常感谢!