[Bug 2147278] [NEW] KDE/Qt frontend broken under Qt6: black window, terminal not scrolling, enum errors

Erich Eickmeyer 2147278 at bugs.launchpad.net
Sat Apr 4 19:06:19 UTC 2026


Public bug reported:

The KDE (Qt) frontend of ubuntu-release-upgrader has several issues when
running under Qt6/PyQt6:

1. Black window on startup

The main upgrader window appears completely black with no content
rendered. This is caused by the app.exec()/app.exit() pattern used to
process events during window setup. In Qt6, calling app.exit() marks the
QApplication as "quit", which prevents subsequent paint events from
being processed.

2. Terminal output does not auto-scroll

The DumbTerminal widget that displays upgrade progress output does not
scroll to follow new lines as they are added. Users must manually scroll
to see current progress.

3. Unscoped Qt5-style enum references crash under PyQt6

PyQt6 requires fully-scoped enum names (e.g., QMessageBox.Icon.Warning
instead of QMessageBox.Warning). Four locations use the old unscoped
style, causing AttributeError at runtime:

 - QMessageBox.Warning
 - QTextCursor.End
 - Qt.FramelessWindowHint
 - QMessageBox.Ok / QMessageBox.Cancel

4. No backward compatibility with PyQt5 on 24.04

Users upgrading from 24.04 LTS still have PyQt5 installed. The frontend
imported directly from PyQt6, which is unavailable on those systems.

Fix:

 - Replaced app.exec()/app.exit() with a local QEventLoop for initial window rendering
 - Added moveCursor(End) and ensureCursorVisible() to the terminal widget
 - Updated all enum references to use Qt6-scoped names
 - Created PyQtCompat.py compatibility shim that tries PyQt6 first, falls back to PyQt5

** Affects: ubuntu-release-upgrader (Ubuntu)
     Importance: High
     Assignee: Erich Eickmeyer (eeickmeyer)
         Status: In Progress


** Tags: resolute

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to ubuntu-release-upgrader in
Ubuntu.
https://bugs.launchpad.net/bugs/2147278

Title:
  KDE/Qt frontend broken under Qt6: black window, terminal not
  scrolling, enum errors

Status in ubuntu-release-upgrader package in Ubuntu:
  In Progress

Bug description:
  The KDE (Qt) frontend of ubuntu-release-upgrader has several issues
  when running under Qt6/PyQt6:

  1. Black window on startup

  The main upgrader window appears completely black with no content
  rendered. This is caused by the app.exec()/app.exit() pattern used to
  process events during window setup. In Qt6, calling app.exit() marks
  the QApplication as "quit", which prevents subsequent paint events
  from being processed.

  2. Terminal output does not auto-scroll

  The DumbTerminal widget that displays upgrade progress output does not
  scroll to follow new lines as they are added. Users must manually
  scroll to see current progress.

  3. Unscoped Qt5-style enum references crash under PyQt6

  PyQt6 requires fully-scoped enum names (e.g., QMessageBox.Icon.Warning
  instead of QMessageBox.Warning). Four locations use the old unscoped
  style, causing AttributeError at runtime:

   - QMessageBox.Warning
   - QTextCursor.End
   - Qt.FramelessWindowHint
   - QMessageBox.Ok / QMessageBox.Cancel

  4. No backward compatibility with PyQt5 on 24.04

  Users upgrading from 24.04 LTS still have PyQt5 installed. The
  frontend imported directly from PyQt6, which is unavailable on those
  systems.

  Fix:

   - Replaced app.exec()/app.exit() with a local QEventLoop for initial window rendering
   - Added moveCursor(End) and ensureCursorVisible() to the terminal widget
   - Updated all enum references to use Qt6-scoped names
   - Created PyQtCompat.py compatibility shim that tries PyQt6 first, falls back to PyQt5

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/2147278/+subscriptions





More information about the foundations-bugs mailing list