当前位置:  开发笔记 > 编程语言 > 正文

当我在python和pyqt中关闭app时,没有运行类析构函数

如何解决《当我在python和pyqt中关闭app时,没有运行类析构函数》经验,为你挑选了1个好方法。

当我退出程序(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).您的应用程序不应该依赖它执行才能正常运行.



1> Karol Nowak..:

当你在它时,请记住,当解释器退出时,不保证每个文档 __del__都能运行.

__del__在其他Python实现中更为棘手(如Jython).您的应用程序不应该依赖它执行才能正常运行.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有