[Bug 2147278] Re: KDE/Qt frontend broken under Qt6: black window, terminal not scrolling, enum errors
Launchpad Bug Tracker
2147278 at bugs.launchpad.net
Wed Apr 8 12:19:44 UTC 2026
This bug was fixed in the package ubuntu-release-upgrader - 1:26.04.14
---------------
ubuntu-release-upgrader (1:26.04.14) resolute; urgency=medium
* DistUpgradeQuirks: Move systemd-coredump quirk from PreDistUpgradeCache
to PostDistUpgradeCache so marks survive the apt resolver, and re-mark
the KDE metapackage for upgrade if held back (LP: #2147255, #2147293)
* Several fixes for the KDE frontend (LP: #2147278):
- Fix black window by using local QEventLoop instead of
app.exec()/app.exit() pattern that breaks under Qt6
- Fix terminal output not auto-scrolling with new lines
- Fix Qt6 scoped enum references (QMessageBox.Icon,
QTextCursor.MoveOperation, Qt.WindowType, QMessageBox.StandardButton)
- Add PyQtCompat.py shim to support both PyQt5 (24.04) and PyQt6
-- Erich Eickmeyer <eeickmeyer at ubuntu.com> Sat, 04 Apr 2026 11:57:19
-0700
** Changed in: ubuntu-release-upgrader (Ubuntu)
Status: In Progress => Fix Released
--
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:
Fix Released
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