「フィード」を停止する際に問題が発生しています。 cancel引数はafterメソッドに影響を与えていないようです。 「フィード停止」はコンソールに印刷されますが、機能後にtkinterを停止するにはどうすればよいですか?
フィードを開始するボタンとフィードを停止するボタンがあるとします。出力付き
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()
:あなたはroot.after(...)
を呼び出すと
Starting Feed
Sleeping 4195
Sleeping 4634
Sleeping 6591
Sleeping 7074
Stopping Feed
Sleeping 4908
Feed Stopped
Sleeping 6892
Sleeping 5605
私はtkinterの仕組みについて完全にはわかっていませんが、これはスレッドの問題のようです。 a(スレッドセーフ)グローバルをキャンセルすると、問題が解決されますか? – mklauber
@mklauber:いいえ、スレッドの問題ではありません。 Tkinterはシングルスレッドです。 –
@ブライアンオークリー:ありがとう。これが私がコメントとして投稿した理由です。私は確信が持てませんでしたので、私はその質問を提起したいと思いました。 – mklauber