Skip to content

Migrate GUI framework from PyQt5 to PyQt6 #497

@GiGiKoneti

Description

@GiGiKoneti

Summary

PyQt5 (and its underlying Qt5) officially reached End-of-Life on May 26, 2024. eSim currently pins PyQt5==5.15.7 in requirements.txt, meaning the entire GUI layer runs on an unsupported framework that will no longer receive security patches or bug fixes.

This issue proposes migrating the GUI codebase from PyQt5 → PyQt6 to future-proof the application.

Scope of Changes

Based on an audit of the src/ directory, the migration touches ~42 Python files across the following categories:

Category Details
Import rewrites from PyQt5from PyQt6 across all modules
Module relocations QAction moved from QtWidgetsQtGui in Qt6
Deprecated methods .exec_().exec() (~85 call sites)
Scoped enums PyQt6 enforces fully qualified enums (e.g. Qt.VerticalQt.Orientation.Vertical)
Removed APIs AA_DontUseNativeDialogs attribute removed in Qt6
Dependencies requirements.txt updated to PyQt6>=6.5.0

Motivation

  • Security: No more upstream patches for Qt5/PyQt5 vulnerabilities.
  • Compatibility: Newer Linux distros and Python versions are dropping PyQt5 from their package repos.
  • Ecosystem: Downstream tools (matplotlib, etc.) are progressively moving to Qt6 backends.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions