暂停一个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中的其余程序的主要内容,如果未能解决你的问题,请参考以下文章
Python:嵌套的while循环将从第一个while开始“继续”,而不是嵌套的while
如何使用 tkinter 事件“继续”或暂停不同的 while 循环?