Как подгрузить интерфейс из другого файла?
Я хотел немного разделить интерфейс от основного кода.
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)
