[問題] 如何立即停止執行緒

看板Python作者 (blue)時間3年前 (2020/08/16 12:07), 編輯推噓2(202)
留言4則, 3人參與, 3年前最新討論串1/2 (看更多)
本身還是新手, 我用tkinter 做了兩個按鈕,Start和Stop 按了Start之後 會一直重覆從0數到9, 按了Stop之後, 會印出stop 但不會馬上停止, 需要完成一個loop之後才會停止 請問有什麼方法可以馬上停止 import tkinter as tk import time import threading def k (): global stop_var stop_var = 0 while True: if stop_var == 1: break for i in range(10): print ( i) time.sleep(0.5) def run(): a = threading.Thread(target = k) a.start() def stop(): global stop_var print ("stop") stop_var = 1 window=tk.Tk() buttonStart = tk.Button(window,width = 10, text = "Start", command = run) buttonStop = tk.Button(window,width = 10, text = "Stop", command = stop) buttonStart.pack() buttonStop.pack() window.mainloop() -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.174.14 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1597550838.A.815.html

08/16 16:15, 3年前 , 1F
多設幾個檢查點
08/16 16:15, 1F

08/16 19:16, 3年前 , 2F
That means you need to re-write your code.
08/16 19:16, 2F

08/16 19:17, 3年前 , 3F
Doing a loop in another loop won't solve your issue.
08/16 19:17, 3F

08/17 00:12, 3年前 , 4F
if stop_var == 1 搬到 for 裡不就好了
08/17 00:12, 4F
文章代碼(AID): #1VEB3sWL (Python)
文章代碼(AID): #1VEB3sWL (Python)