暂停一个while循环,而不是我在Python中的其余程序

Posted

技术标签:

【中文标题】暂停一个while循环,而不是我在Python中的其余程序【英文标题】:Pause a while loop and not the rest of my program in Python 【发布时间】:2016-05-01 20:33:07 【问题描述】:

我正在用 Python 编写一个(简单的)程序,在其中我按下一个按钮使球落下,然后球以较慢的速度再次自动上升。落球部分有效,但我似乎无法让上升部分发生。

我的第一反应是使用 if。但是 if 只触发一次,我希望它在每次球落下时触发。我似乎无法完成这项工作。

我的第二个方法是使用 while 循环。但是,我似乎无法在循环中找到正确的时机。我不能在我的按钮外触发它,所以现在我在它里面触发它。像这样:

def callback1():
    global l1
    w.move(cirkel1, 0, 20)
    label1.configure(text=l1)
    while l1 != 0:
        w.move(cirkel1, 0, -20)
        l1 -= 1

但是 while 循环在我按下按钮的同时执行,这使得球根本不动。我试着环顾四周,发现了一个睡眠功能,但问题是它暂停了我的整个程序,而不仅仅是循环。而且我希望能够在球缓慢上升的同时进一步降低球。我试着寻找一个计时器或类似的东西,但我找不到任何可以理解的东西,而且看起来很有效。

我是做错了什么,忘记了一个选项,还是我想要的根本不可能?请帮帮我。

【问题讨论】:

什么是w & label1 我正在使用带有 tkinter 的 GIU。 Label1 是我使用的第一个标签(因此显示文本的位置),我使用它来计算按钮被按下的次数,或者球的“低”程度。 w 来自我使用的画布,并使我绘制的椭圆向下移动。 【参考方案1】:

你应该看看线程模块: https://docs.python.org/2/library/threading.html

例如,您可以将所有动画嵌入到线程的run() 方法中。 您还可以将Timer 对象用于动画的连续步骤。

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 我在 Python 方面的经验不够,我真的不明白如何在我的代码中准确地包含这些信息,以使其工作。 什么是 cirkel1?函数callback1()怎么调用?

以上是关于暂停一个while循环,而不是我在Python中的其余程序的主要内容,如果未能解决你的问题,请参考以下文章

在 Javascript 中的 while 循环内创建暂停

当条件不满足时,while循环退出而不是循环

Python:嵌套的while循环将从第一个while开始“继续”,而不是嵌套的while

如何使用 tkinter 事件“继续”或暂停不同的 while 循环?

如何在 Python 中没有任何循环(例如:for、while 等)递归 JSON 文件

理解python中嵌套while循环中的概念的问题