diff --git a/openpype/hosts/fusion/api/menu.py b/openpype/hosts/fusion/api/menu.py index 0b9ad1a43b..ff4a734928 100644 --- a/openpype/hosts/fusion/api/menu.py +++ b/openpype/hosts/fusion/api/menu.py @@ -15,6 +15,7 @@ from openpype.hosts.fusion.api.lib import ( ) from openpype.pipeline import get_current_asset_name from openpype.resources import get_openpype_icon_filepath +from openpype.tools.utils import get_qt_app from .pipeline import FusionEventHandler from .pulse import FusionPulse @@ -174,7 +175,8 @@ class OpenPypeMenu(QtWidgets.QWidget): def launch_openpype_menu(): - app = QtWidgets.QApplication(sys.argv) + + app = get_qt_app() pype_menu = OpenPypeMenu() diff --git a/openpype/tools/utils/__init__.py b/openpype/tools/utils/__init__.py index 50d50f467a..74702a2a10 100644 --- a/openpype/tools/utils/__init__.py +++ b/openpype/tools/utils/__init__.py @@ -32,6 +32,7 @@ from .lib import ( set_style_property, DynamicQThread, qt_app_context, + get_qt_app, get_openpype_qt_app, get_asset_icon, get_asset_icon_by_name, diff --git a/openpype/tools/utils/lib.py b/openpype/tools/utils/lib.py index 365caaafd9..c7f92dd26e 100644 --- a/openpype/tools/utils/lib.py +++ b/openpype/tools/utils/lib.py @@ -154,11 +154,15 @@ def qt_app_context(): yield app -def get_openpype_qt_app(): - """Main Qt application initialized for OpenPype processed. +def get_qt_app(): + """Get Qt application. - This function should be used only inside OpenPype process and never inside - other processes. + The function initializes new Qt application if it is not already + initialized. It also sets some attributes to the application to + ensure that it will work properly on high DPI displays. + + Returns: + QtWidgets.QApplication: Current Qt application. """ app = QtWidgets.QApplication.instance() @@ -184,6 +188,17 @@ def get_openpype_qt_app(): app = QtWidgets.QApplication(sys.argv) + return app + + +def get_openpype_qt_app(): + """Main Qt application initialized for OpenPype processed. + + This function should be used only inside OpenPype process and never inside + other processes. + """ + + app = get_qt_app() app.setWindowIcon(QtGui.QIcon(get_app_icon_path())) return app