【发布时间】: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 来自我使用的画布,并使我绘制的椭圆向下移动。
标签: python python-3.x timer while-loop sleep