问题
pyqt6里面的窗口,如何嵌套的多的话,深层的组件报错不会打印,而是直接退出程序,不方便开发
解决
在主运行文件里,指定sys.excepthook
函数,让有错误第一时间打印出来,不用层层传递错误信息,避免被拦截
sys.exc_info()
:返回一个错误数据的元组,有兴趣的可以去看看
sys.excepthook
:程序运行出现错误时会运行的函数,会将sys.exc_into()传入进去
traceback.print_exception()
:系统打印错误调用的函数,需要传递sys.exc_into()
from window.main_window import MainWindow
from PyQt6.QtWidgets import QApplication
import sys
import traceback
def handle_exception(*args, **kwargs):
traceback.print_exception(*args)
sys.exit()
if __name__ == '__main__':
app = QApplication(sys.argv)
sys.excepthook = handle_exception
main_window = MainWindow()
main_window.show()
sys.exit(app.exec())