QVBox 레이아웃을 사용하고 있으며 레이아웃에 두 개의 위젯과 동적 레이아웃 'layout2'가 있습니다. 위젯 1은 상단에 고정됨 위젯 3은 하단에 고정되고 위젯 2는 동적 위젯입니다. layout2는 매번 삭제되고 추가됩니다. 여기서 문제는 layout2 레이아웃이 삭제 된 widget3을 맨 아래에 배치 할 수 없다는 것입니다. 위젯 3이 맨 위로 이동합니다. 아래는 샘플 코드입니다.위젯 사이에 Pyqt5 추가 스트래칭?
class Screen(QWidget):
def __init__(self):
super(Screen, self).__init__()
self.main_layout = QVBoxLayout()
widget1 = QPushButton("Text1")
#self.widget2 = QWidget()
widget3 = QLabel("Text3")
self.widget2_layout = QHBoxLayout()
widget2_label = QLabel("text2")
self.widget2_layout.addWidget(widget2_label)
#self.widget2.setLayout(self.widget2_layout)
self.main_layout.addWidget(widget1,Qt.AlignTop)
self.main_layout.addLayout(self.widget2_layout)
self.main_layout.addWidget(widget3,Qt.AlignBottom)
widget1.clicked.connect(self.change_widget2)
self.setLayout(self.main_layout)
self.show()
def clearLayout(self,layout):
item = layout.takeAt(0)
while item:
w = item.widget()
if w:
w.deleteLater()
lay = item.layout()
if lay:
self.clearLayout(item.layout())
item = layout.takeAt(0)
def change_widget2(self):
self.clearLayout(self.widget2_layout)
self.widget2_layout = QHBoxLayout()
widget2_label = QLabel("text changed")
self.widget2_layout.addWidget(widget2_label)
self.main_layout.addLayout(self.widget2_layout)
app = QApplication(sys.argv)
Gui = Screen()
sys.exit(app.exec_())
나는 addstretch, 더미 추가 레이아웃을 시도했지만 아무런 효과가 없었습니다.
위키 2를 동적으로 변경하려고한다는 것부터 알고 있습니다. 내가 맞습니까? – eyllanesc
예 위젯을 동적으로 변경하고 위젯 1과 위젯 3 사이에 배치하십시오. 간단히하기 위해 레이아웃 2에는 단 하나의 레이블을 추가했지만 그 이상의 레이블을 추가했습니다. 정말 고마워요 –
위치에 따라 무엇을 의미합니까? – eyllanesc