Если правильно понял суть проблемы, то:
Вам нужно изменить подход к использованию ui.
Все исходные файлы из qtdesigner нужно перевести в формат .py
Ресурсы
В папку со всеми окнами располагаем ресурсы
`.qrc -> .py`
pyrcc6 res/resources.qrc -o src/gui/windows/ui/resources_rc.py; \
Интерфейс
`.ui -> .py`
pyuic6 --from-imports res/ui/main.ui -o src/gui/windows/ui/main.py; \
--from-imports - в файле ресурсов .py сделает импорт
from . import resources_rc
, т.е. подхватит ранее созданные в этом каталоге файл ресурсов
ресурсы + интерфейс в 1 команду
pyrcc6 res/resources.qrc -o src/gui/windows/ui/resources_rc.py; \
pyuic6 --from-imports res/ui/main.ui -o src/gui/windows/ui/main.py; \
pyuic6 --from-imports res/ui/sub.ui -o src/gui/windows/ui/sub.py;
Класс окна (на примере главного)
from PyQt6.QtWidgets import QMainWindow
from .ui.main import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
для PySide6
заменить:
pyrcc6 на pyside6-rcc
pyuic6 на pyside6-uic
Таким образом мы перевели файлы ресурсов и шаблонов в .py формат, инициировали их в нашем классе (MainWindow).
Теперь, при сборке, pyinstaller пройдется по всем импортам, включая ресурсы и интерфейсы, и добавит их себе.
Еще можете обратить внимание на библиотеку nuitka для создания exe файлов и не только.