Как подгрузить интерфейс из другого файла?

Я хотел немного разделить интерфейс от основного кода.

Cоздал два класса - Design, который находяится в файле Design.py, и MyWindow, который находится в файле Main.py.

В классе Design создаются виджеты, которые должны попасть в главное окно приложения. Мне нужно как-то импортировать создание виджетов в класс MyWindow.

Может быть, можно подгрузить создание виджетов из файла Design.py в Main.py?

Design.py

from PyQt5 import QtCore, QtWidgets, QtGui

class Design(QtWidgets.QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)

        box = QtWidgets.QHBoxLayout(self)

        btn = QtWidgets.QPushButton('Text')

        box.addWidget(btn)

Main.py

from PyQt5 import QtCore, QtWidgets, QtGui
import Design


class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)



if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.setWindowTitle(' ')
    window.show()
    sys.exit(app.exec_())

Ответы (1 шт):

Автор решения: S. Nick

Правильный импорт

from Design_ import Design

Создайте экземпляр класса

self.design = Design()

Добавьте в макет

layout.addWidget(self.design)

Main.py

from PyQt5 import QtCore, QtWidgets, QtGui
#import Design_
from Design_ import Design    # поменял на `Design_`, потому что у меня такое имя модуля `Design` уже было 


class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)


        self.design = Design()

        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(self.design)        


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.setWindowTitle('MyWindow')
    window.resize(400, 300)
    window.show()
    sys.exit(app.exec_())

Design_.py

from PyQt5 import QtCore, QtWidgets, QtGui

class Design(QtWidgets.QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)

        box = QtWidgets.QHBoxLayout(self)

        btn = QtWidgets.QPushButton('Text - Design')

        box.addWidget(btn)

введите сюда описание изображения

→ Ссылка