Coverage for src / ezqt_app / utils / qt_runtime.py: 97.73%
34 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-06 13:12 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-06 13:12 +0000
1# ///////////////////////////////////////////////////////////////
2# UTILS.QT_RUNTIME - Qt runtime environment helpers
3# Project: ezqt_app
4# ///////////////////////////////////////////////////////////////
6"""Low-level Qt environment setup utilities."""
8from __future__ import annotations
10# ///////////////////////////////////////////////////////////////
11# IMPORTS
12# ///////////////////////////////////////////////////////////////
13# Standard library imports
14import os
15import sys
18# ///////////////////////////////////////////////////////////////
19# FUNCTIONS
20# ///////////////////////////////////////////////////////////////
21def configure_qt_environment() -> None:
22 """Configure Qt environment variables before any Qt imports."""
23 os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"
24 os.environ["QT_SCALE_FACTOR_ROUNDING_POLICY"] = "PassThrough"
25 os.environ["QT_FONT_DPI"] = "96"
26 os.environ["QT_ENABLE_HIGHDPI_SCALING"] = "1"
27 os.environ["QT_SCALE_FACTOR"] = "1"
29 if sys.platform.startswith("win"):
30 os.environ.setdefault("QT_QPA_PLATFORM", "windows:dpiawareness=0")
31 elif sys.platform.startswith("linux"):
32 os.environ.setdefault("QT_QPA_PLATFORM", "xcb")
33 elif sys.platform.startswith("darwin"): 33 ↛ exitline 33 didn't return from function 'configure_qt_environment' because the condition on line 33 was always true
34 os.environ.setdefault("QT_QPA_PLATFORM", "cocoa")
37def configure_qt_high_dpi() -> bool:
38 """Configure Qt High DPI policy when Qt modules are available."""
39 try:
40 from PySide6.QtCore import Qt
41 from PySide6.QtGui import QGuiApplication
43 if QGuiApplication.instance() is None:
44 QGuiApplication.setHighDpiScaleFactorRoundingPolicy(
45 Qt.HighDpiScaleFactorRoundingPolicy.PassThrough
46 )
47 return True
48 return False
49 except ImportError:
50 return False
51 except RuntimeError as error:
52 if "QGuiApplication instance" in str(error):
53 return False
54 raise
55 except Exception:
56 return False
59def configure_qt_high_dpi_early() -> bool:
60 """Configure environment and High DPI policy as early as possible."""
61 configure_qt_environment()
62 return configure_qt_high_dpi()
65# Apply environment configuration at import-time for backward compatibility
66configure_qt_environment()
69# ///////////////////////////////////////////////////////////////
70# PUBLIC API
71# ///////////////////////////////////////////////////////////////
72__all__ = [
73 "configure_qt_environment",
74 "configure_qt_high_dpi",
75 "configure_qt_high_dpi_early",
76]