[docs]defget_main_window():"""Get the Main window of a QT application."""app=QtWidgets.QApplication.instance()return[wforwinapp.topLevelWidgets()ifisinstance(w,QtWidgets.QMainWindow)][0]
[docs]defcreate_app():"""Create a Qt application."""globalQT_APPQT_APP=QtWidgets.QApplication.instance()ifQT_APPisNone:# pragma: no coverQT_APP=QtWidgets.QApplication(sys.argv)returnQT_APP
[docs]defrequire_qt(func):"""Function decorator to specify that a function requires a Qt application. Use this decorator to specify that a function needs a running Qt application before it can run. An error is raised if that is not the case. """@wraps(func)defwrapped(*args,**kwargs):ifnotQtWidgets.QApplication.instance():_logger.warning('Creating a Qt application.')create_app()returnfunc(*args,**kwargs)returnwrapped
[docs]@require_qtdefrun_app():# pragma: no cover"""Run the Qt application."""globalQT_APPreturnQT_APP.exit(QT_APP.exec_())