application.removePostedEvents(None) _crash_handler = CrashHandler(hook_type, value, traceback, has_started) # This means the QtApplication could be created and so the splash screen. Then Cura closes it if CuraApplication.splash is not None: CuraApplication.splash.close() _crash_handler.early_crash_dialog.show() sys.exit(application.exec_()) # Set exception hook to use the crash dialog handler sys.excepthook = exceptHook # Enable dumping traceback for all threads faulthandler.enable(all_threads = True) # Workaround for a race condition on certain systems where there # is a race condition between Arcus and PyQt. Importing Arcus # first seems to prevent Sip from going into a state where it # tries to create PyQt objects on a non-main thread. import Arcus #@UnusedImport from cura.CuraApplication import CuraApplication app = CuraApplication() app.addCommandLineOptions() app.parseCliOptions() app.initialize() app.startSplashWindowPhase() app.startPostSplashWindowPhase() app.run()