我有一个框架,当你点击它时会扩大和缩小。它有 2 个布局。一个布局应该在布局展开时可见(内容布局),而另一个布局应该始终可见,即使框架缩小(标题布局)也是如此。
内容布局应该可以水平调整大小,但不应该垂直调整大小。
我试过这个,但它没有用:
class AppDemo(QWidget):
def __init__(self):
super().__init__()
self.frame = QFrame()
self.frame.setStyleSheet("background: green; border-radius: 8px;")
self.frame_layout = QVBoxLayout()
self.frame.setLayout(self.frame_layout)
self.header_layout = QHBoxLayout()
self.header_layout.setAlignment(Qt.AlignTop)
self.content_layout = QVBoxLayout()
self.frame_layout.addLayout(self.header_layout)
self.frame_layout.addLayout(self.content_layout)
self.header_label = QLabel(u"Marvin sollte Programmieren lernen!")
self.header_layout.addWidget(self.header_label)
self.content_frame = QFrame()
self.content_frame.setStyleSheet("background: red; border-radius: 8px;")
self.content_frame.setFixedHeight(1000)
self.content_layout.addWidget(self.content_frame)
self.layout = QVBoxLayout()
self.setLayout(self.layout)
self.layout.addWidget(self.frame)
self.frame.mouseReleaseEvent = lambda _:self.resizeFrame()
def resizeFrame(self):
current_size = self.frame.geometry()
self.animation = QPropertyAnimation(self.frame, b"geometry")
self.animation.setDuration(500)
self.animation.setStartValue(current_size)
self.animation.setEndValue(QRect(current_size.x(), current_size.y(), current_size.width(), current_size.height() - 500))
self.animation.setEasingCurve(QEasingCurve.OutCubic)
self.animation.start()
作为参考,当您单击右侧的面板之一时,我想实现类似于可以在本网站上看到的效果。