前端窗口模仿下篇文章所写:
qtkinter库使用技巧之监听窗口变化自动刷新组件位置大小_tkinter窗口 改变大小 布局自动调整-CSDN博客
def setupUi(self):
def predict_video():
self.remove_folder(self.predict_dir)
model = YOLO(os.getcwd() + '/best.pt')
model.predict(source=self.video_dir, save=True, save_conf=True, save_txt=True, name='output',max_det=1, classes=1)
# model(source=self.video_dir, save=True, save_conf=True, save_txt=True, name='output', max_det=1, classes=1)
def run_com():
Thread(target=predict_video).start()
elf.btn1 = tk.Button(text="Detect", bd=0, bg='black', fg='white',command=run_com)
self.btn1.place(relx=0.29, rely=0.05, y=200, relwidth=0.48, height=30)
直接运行.py文件时正常运行(未加Thread时也能正常运行),当转为exe文件时,按下btn1时界面会卡住重新生成一个相同的前端界面,一直会反复生成
当关闭后面新生成的前端时,前一个前端界面才会开始运行predict函数,正常运行结束。当重新点击RUN时,则又会新生成一个前端。
我尝试加上Thread,或是使用if newWin == None来判断,结果都是一样。
使用predict识别视频和图片结果也是一样,必须把新生成的前端界面关闭,前一个才能正常执行。
没有predict函数的代码都能正常执行。
尝试将predict函数放进
if __name__ == '__main__':
top = MyTk()
def predict_video():
top.remove_folder(top.predict_dir)
model = YOLO(os.getcwd() + '/best.pt')
model.predict(source=top.video_dir, save=True, save_conf=True, save_txt=True, name='output', max_det=1,
classes=1)
# model(source=self.video_dir, save=True, save_conf=True, save_txt=True, name='output', max_det=1, classes=1)
def run_com():
Thread(target=predict_video).start()
top.btn1.configure(command=run_com)
# time.sleep(5)
top.mainloop()
同样会发生这个问题