当我退出程序(sys.exit(app.exec _()))时,主窗体关闭,但有两个问题:
1 - MainForm类的析构
函数不运行2 -
当我关闭app时,线程仍在运行,MainForm的析构函数被破坏,所有线程也被杀死
class MainForm(QMainWindow,Ui_MainWindow): def __init__(self,parent=None): super(MainForm,self).__init__(parent) self.setupUi(self) #... def init_main_form(self): #... self.show_time() def show_time(self): self.label_9.setText(u"{}:{}:{}".format(str(datetime.datetime.now().hour),str(datetime.datetime.now().minute),str(datetime.datetime.now().second))) self.label_9.resize(self.label_9.width()+len(self.label_9.text())*3,self.label_9.height()) b = threading.Timer(1,self.show_time) #b.setName('localtime') #self.thread_list.append(b) b.start() def __del__(self): print("app is closed") for tr in threading.enumerate(): if tr.isAlive(): tr._Thread__stop() # or tr.finished # or tr.terminate() def main(): app = QApplication(sys.argv) main_form = MainForm() main_form.show() sys.exit(app.exec_()) if __name__ == '__main__': main()
Karol Nowak.. 5
当你在它时,请记住,当解释器退出时,不保证每个文档 __del__
都能运行.
__del__
在其他Python实现中更为棘手(如Jython).您的应用程序不应该依赖它执行才能正常运行.
当你在它时,请记住,当解释器退出时,不保证每个文档 __del__
都能运行.
__del__
在其他Python实现中更为棘手(如Jython).您的应用程序不应该依赖它执行才能正常运行.