Python:如何在函数内部停止循环函数?

用户2919805

我写了这段代码,在tkinter中创建了一个椭圆形。当用鼠标单击时,椭圆会为其自身创建新坐标,然后开始脉动。

它是这样的:1.默认情况下创建椭圆。2.单击时,将调用“点击”功能。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)

但是,当我现在再次单击脉动椭圆时,它似乎有点bug,并且看起来像以前的循环脉动效果函数仍在起作用,新的脉动始于不同的坐标。所以,我的问题是,当该函数在函数中时,如何停止该函数的循环(脉冲),而我想再次启动第一个函数。(创建新坐标并开始脉动)

这是您可以运行的文件,可以确切地看到发生了什么:

https://mega.co.nz/#!e5pj0brC!QW6R4X9WTshOCh3FTybLrQu_oI0OOU6wL5QI61punUE

另外,如果您发现其他可能导致此错误的原因,请告诉我。我尚未掌握python中的线程和类知识,但是如果这是唯一的解决方案,请告诉我!否则,如果可以使用一些更简单的方法来管理它,将不胜感激!

非常感谢你!

tobias_k

那不是虫子。您的click方法触发该pulsate方法,然后再次触发自身。如果click再次调用,它将pulsate再次触发,但这是pulsate(缺少更好的用语)的另一个“实例”,没有引用另一个同时运行的实例

相反,您应该使用global变量来保存椭圆坐标。click然后,您的方法将设置这些坐标,例如global oval; oval = esimene_x1, esimene_y1, teine_x1, teine_y1,但不会触发pulsate而是pulsate在应用程序启动时被调用一次,然后再次触发自身,就像在您的代码中一样。椭圆形坐标不会pulsate作为参数传递,而是从全局变量读取。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

停止Python 3中的函数内部循环

来自分类Dev

jQuery Onload函数停止循环,在函数内部传递循环x

来自分类Dev

如何从函数内部中断for循环

来自分类Dev

如何在自身内部创建一个函数循环?树莓派 4 和 Python

来自分类Dev

灰壳-如何在函数内部进行while循环?

来自分类Dev

如何在Python的循环中定义函数

来自分类Dev

如何使用python在函数内部编写while循环?

来自分类Dev

如何在函数内部调用函数?

来自分类Dev

如何在函数内部调用函数

来自分类Dev

如何在函数内部访问函数?

来自分类Dev

如何在函数内部返回函数

来自分类Dev

如何在模块中的函数内部使用模块的位置-python

来自分类Dev

如何在python中的函数内部访问和编辑变量

来自分类Dev

如何在discord python api内部运行异步函数

来自分类Dev

JavaScript:如何在异步内部函数内部返回外部函数?

来自分类Dev

函数内部的Python函数

来自分类Dev

如何中断函数内部的循环并返回该函数的值?(Javascript)

来自分类Dev

如何在for循环内动态模拟python函数的结果?

来自分类Dev

如何在sigmoid函数中删除这些循环在python中

来自分类Dev

如何在不重复内容的情况下循环遍历map函数内部的数组

来自分类Dev

如何在JavaScript中停止递归函数?

来自分类Dev

如何在函数内部重置静态向量?

来自分类Dev

如何在函数内部进行更新/设置

来自分类Dev

如何在函数内部打印变量

来自分类Dev

如何在构造函数内部使用Timer?

来自分类Dev

如何在函数内部使用递归查询?

来自分类Dev

如何在函数内部打印__init __()?

来自分类Dev

坚持如何在函数内部创建数组

来自分类Dev

如何在类内部调用函数?

Related 相关文章

热门标签

归档