【发布时间】:2016-03-22 10:46:42
【问题描述】:
[问题] 我想停止调用函数的线程。
[代码]
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()
[当前] 如果我点击“停止”按钮,什么都不会发生。
[渴望] 如果我点击“停止”按钮,函数“testFunction”应该会停止。
【问题讨论】:
标签: python multithreading wxpython wxwidgets