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

1# /////////////////////////////////////////////////////////////// 

2# UTILS.QT_RUNTIME - Qt runtime environment helpers 

3# Project: ezqt_app 

4# /////////////////////////////////////////////////////////////// 

5 

6"""Low-level Qt environment setup utilities.""" 

7 

8from __future__ import annotations 

9 

10# /////////////////////////////////////////////////////////////// 

11# IMPORTS 

12# /////////////////////////////////////////////////////////////// 

13# Standard library imports 

14import os 

15import sys 

16 

17 

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" 

28 

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") 

35 

36 

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 

42 

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 

57 

58 

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() 

63 

64 

65# Apply environment configuration at import-time for backward compatibility 

66configure_qt_environment() 

67 

68 

69# /////////////////////////////////////////////////////////////// 

70# PUBLIC API 

71# /////////////////////////////////////////////////////////////// 

72__all__ = [ 

73 "configure_qt_environment", 

74 "configure_qt_high_dpi", 

75 "configure_qt_high_dpi_early", 

76]