これはヤギの腸を見つめていくつかの意味を集めるようなものですが、ここではあなたが望むことをする例があります。他の90%のコードを投稿していないので、間違った場所を推測するのは難しいです。私はこれを部分的に公表しました。これは、実用的な例を書くことができ、質問に簡単に答えることができることを示しています。
try:
import tkinter
except ImportError:
import Tkinter as tkinter # python 2
import threading
import time
class Foo(tkinter.Frame):
def __init__(self, parent):
tkinter.Frame.__init__(self, parent)
cancel_button = tkinter.Button(self, text="Stop While", command=self.cancel)
cancel_button.place(x=50, y=50)
self.pack(fill=tkinter.BOTH, expand=1)
self._thread = threading.Thread(target=self.while_thread)
self._thread.isDaemon()
self._thread.start()
def cancel(self):
self.break_main = 1
def while_thread(self):
print("Thread start")
self.break_main = 0
while self.break_main == 0:
time.sleep(.1)
print("Thread done")
if __name__ == "__main__":
root = tkinter.Tk()
root.geometry("250x150+300+300")
app = Foo(root)
root.mainloop()
print("Main Done")
試してみてください。 if self.break_main:break'あなたのコード –
問題を示す最小限の例を提示しなければ、この問題を解決することはできません。あなたが聞いたのは、ゆるい断片だけです。私たちはあなたがあなたのスレッドをどのように始めるのか分かりません。同じオブジェクトをそれらの方法のいずれか、またはいくつかのもので使用しているのであれば、わかりません。私はあなたのコードに似た例を作った。私は答えとして投稿しますが、実際には推測します。 – tdelaney