Skip to content

Commit 0c21a90

Browse files
authored
Add Qt5 backwards compatibility for UI generation (#303)
Attempts to fully support PyQt5 backwards compatibility based on feedback from @PrentissLiu
1 parent 206ff99 commit 0c21a90

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

morph/readability_settings_ui.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@
66
# run again. Do not edit this file unless you know what you are doing.
77

88

9-
from PyQt6 import QtCore, QtWidgets
9+
try:
10+
from PyQt6 import QtCore, QtGui, QtWidgets
11+
except:
12+
from PyQt5 import QtCore, QtGui, QtWidgets
13+
QtCore.Qt.AlignmentFlag.AlignLeading = QtCore.Qt.AlignLeading
14+
QtCore.Qt.AlignmentFlag.AlignTrailing = QtCore.Qt.AlignTrailing
1015

1116

1217
class Ui_ReadabilitySettingsDialog(object):

morph/readability_ui.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@
66
# run again. Do not edit this file unless you know what you are doing.
77

88

9-
from PyQt6 import QtCore, QtGui, QtWidgets
9+
try:
10+
from PyQt6 import QtCore, QtGui, QtWidgets
11+
except:
12+
from PyQt5 import QtCore, QtGui, QtWidgets
13+
QtCore.Qt.AlignmentFlag.AlignLeading = QtCore.Qt.AlignLeading
14+
QtCore.Qt.AlignmentFlag.AlignTrailing = QtCore.Qt.AlignTrailing
1015

1116

1217
class Ui_ReadabilityDialog(object):

scripts/build_ui.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
import subprocess
22

3-
43
def build_ui(in_file, out_file):
5-
stdout = subprocess.run(["pyuic6", in_file], stdout=subprocess.PIPE).stdout
6-
7-
lines = stdout.decode("utf-8").replace("__relpath__", "")
8-
9-
with open(out_file, "w") as sources:
10-
sources.write(lines)
4+
stdout = subprocess.Popen(["pyuic6", in_file], stdout=subprocess.PIPE, text=True).stdout
115

6+
with open(out_file, 'w') as sources:
7+
for line in iter(stdout.readline, ""):
8+
if line.startswith("from PyQt6 import"):
9+
imports = line.split("import")[1].strip()
10+
sources.write(f"""try:
11+
from PyQt6 import {imports}
12+
except:
13+
from PyQt5 import {imports}
14+
QtCore.Qt.AlignmentFlag.AlignLeading = QtCore.Qt.AlignLeading
15+
QtCore.Qt.AlignmentFlag.AlignTrailing = QtCore.Qt.AlignTrailing
16+
""")
17+
else:
18+
sources.write(line)
1219

1320
build_ui("morph/readability.ui", "morph/readability_ui.py")
1421
build_ui("morph/readability_settings.ui", "morph/readability_settings_ui.py")

0 commit comments

Comments
 (0)