【发布时间】:2012-04-04 07:47:50
【问题描述】:
我在停止“提要”时遇到问题; cancel 参数似乎对 after 方法没有任何影响。虽然“进纸停止”打印到控制台。
我正在尝试使用一个按钮来启动提要和另一个按钮来停止提要。
from Tkinter import Tk, Button
import random
def goodbye_world():
print "Stopping Feed"
button.configure(text = "Start Feed", command=hello_world)
print_sleep(True)
def hello_world():
print "Starting Feed"
button.configure(text = "Stop Feed", command=goodbye_world)
print_sleep()
def print_sleep(cancel=False):
if cancel==False:
foo = random.randint(4000,7500)
print "Sleeping", foo
root.after(foo,print_sleep)
else:
print "Feed Stopped"
root = Tk()
button = Button(root, text="Start Feed", command=hello_world)
button.pack()
root.mainloop()
随着输出:
Starting Feed
Sleeping 4195
Sleeping 4634
Sleeping 6591
Sleeping 7074
Stopping Feed
Sleeping 4908
Feed Stopped
Sleeping 6892
Sleeping 5605
【问题讨论】:
-
我不完全确定 tkinter 是如何工作的,但这对我来说看起来很像一个线程问题。如果你取消一个(线程安全的)全局,这能解决问题吗?
-
@mklauber:不,不是线程问题。 Tkinter 是单线程的。
-
@BryanOakley:谢谢。这就是我发表评论的原因。我不确定,所以我只是想提出这个问题。
标签: python button loops tkinter