[PROBLEM] Я хочу остановить поток, который вызывает функцию.Как остановить поток в wxpython?
[КОД]
import wx
app = wx.App(redirect=False)
top = wx.Frame(None)
sizer = wx.GridBagSizer()
import threading
shutdown_event = threading.Event()
def testFunction(event):
while not shutdown_event.is_set():
import time
for i in range(2):
print ('win','r')
time.sleep (0.5)
print ('abc')
time.sleep (0.5)
print ('enter')
time.sleep (0.5)
print 'sleep'
time.sleep (3)
def startThread(event):
import threading
th = threading.Thread(target=testFunction, args=(event,))
th.start()
def stopThread(event):
shutdown_event.set()
addButton = wx.Button(top, -1, "Start", style=wx.BU_EXACTFIT)
sizer.Add(addButton, (6, 8), (2, 14), wx.EXPAND)
stopButton = wx.Button(top, -1, "Stop", style=wx.BU_EXACTFIT)
sizer.Add(stopButton, (8, 9), (2, 14), wx.EXPAND)
top.Bind(wx.EVT_BUTTON, startThread, addButton)
top.Bind(wx.EVT_BUTTON, stopThread, stopButton)
top.Sizer = sizer
top.Sizer.Fit(top)
top.Show()
app.MainLoop()
[ТЕКУЩИЙ] Ничего не произойдет, если нажать на кнопку "Стоп".
[DESIRED] Функция «testFunction» должна остановиться, если я нажму кнопку «Стоп».
Я понимаю вашу точку зрения. моя цель - остановить функцию, когда я нажимаю на stop btn. другими словами, если функция имеет в общей сложности 5 шагов, и я нажимаю «Остановить», когда функция находится на шаге 3, тогда шаг 4 больше не должен выполняться. – george
Затем вам нужно добавить '' break' или 'continue' после каждого шага. – tglaria
[plus1], потому что я слишком ленился, чтобы посмотреть, как лучше всего вырваться из цикла '' while'': D – nepix32