Я новичок в этом поле, и я надеюсь, что это не кажется глупым вопросом. Я использую PyQt5 для Python 3.8 на Mac. Я хочу добавить макет (addLayout) в другой макет из родительского окна, если это возможно !
Это пример: у меня есть класс (ParentWindow), у него много виджетов и hboxlayout. (ChildWindow) - это класс, унаследованный от ParentWindow, и он также имеет виджеты и другую разметку; вопрос: можно ли добавить макет в дочернее окно? Если я использую setLayout в ChildWindow, он игнорирует его и показывает сообщение: (QWidget :: setLayout: Попытка установить QLayout "" на ChildWindow "", который уже имеет макет). Итак, могу ли я использовать addLayout для родительского макета окна? И как
# The Parent Class
from PyQt5.QtWidgets import QWidget, QHBoxLayout,QLabel
class ParentWindow(QWidget):
def __init__(self):
super().__init__()
title = "Main Window"
self.setWindowTitle(title)
left = 000; top = 500; width = 600; hight = 300
self.setGeometry(left, top, width, hight)
MainLayoutHbox = QHBoxLayout()
header1 = QLabel("Header 1")
header2 = QLabel("Header 2")
header3 = QLabel("Header 3")
MainLayoutHbox.addWidget(header1)
MainLayoutHbox.addWidget(header2)
MainLayoutHbox.addWidget(header3)
self.setLayout(MainLayoutHbox)
# End of Parent Class
# The SubClass
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QHBoxLayout, QTabWidget, QLabel
import sys
from ParentWindow import ParentWindow
class ChildWindow(ParentWindow):
def __init__(self):
super().__init__()
vbox = QVBoxLayout()
MainLabel= QLabel("My Window")
vbox.addWidget(MainLabel)
self.setLayout(vbox) # This show the Warning Error
# I assume the below code should work to extend the parent layout!! But it gives error
# parent.MainLayoutHbox.addLayout(vbox)
if __name__ == "__main__":
App = QApplication(sys.argv)
MyWindow= ChildWindow()
MyWindow.show()
App.exec()