Python 版本 3.7 | NPM 版本 6.2.0 | 谷歌灯塔包 4.0.0 版我正在尝试创建一个相当简单的 Tkinter 窗口来自动化 Google 灯塔 NPM 包,但是在尝试停止线程时失败了。线程:lighthouse_thread = threading.Thread(target=start_lighthouse)以及启动线程的按钮:Start_Ligthouse = Button(root, text="Starten", command=lighthouse_thread.start)Start_Ligthouse.place(x=850, y=312)Start_Ligthouse.config(state=DISABLED)root.after(100, CheckInOut)该函数如下所示:def start_lighthouse(): global filenumber global reportlocation global instantkill global file Start_Ligthouse.config(state=DISABLED) for url in file: url = url.rstrip("\n") print(url) filename = url.replace("https","").replace("/","-").replace("\n","").replace(":","").replace("--","") if os.path.isfile(reportlocation + "/" + filename + ".html"): print("EXISTS!") filenumber = 2 while True: newfilename = filename + "{}".format(filenumber) if not os.path.isfile(reportlocation + "/" + newfilename + ".html"): filename = newfilename break filenumber += 1 if instantkill: break #os.system("lighthouse --disable-device-emulation --throttling-method=provided --preset=perf --quiet --output-path={}/{}.html {}".format(reportlocation,filename,url)) CheckIn = False CheckOut = False print("LoopEnded")我评论了 os.system 命令,以便我可以快速浏览列表。如果我再次调用该函数,我会收到线程无法启动两次的错误(我理解。)但据我所知,线程应该在函数完成后终止。我的问题是:如何让线程在完成它应该做的事情后终止?
1 回答
HUWWW
TA贡献1874条经验 获得超12个赞
我没有使用按钮调用线程,而是创建了一个创建线程的函数。
def create_thread():
print("Thread Created")
lighthouse_thread = threading.Thread(target=start_lighthouse)
lighthouse_thread.start()
按钮现在调用这个函数,从而创建一个新线程。
Start_Ligthouse = Button(root, text="Starten", command=create_thread)
添加回答
举报
0/150
提交
取消