0

我有一个框架,当你点击它时会扩大和缩小。它有 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()

作为参考,当您单击右侧的面板之一时,我想实现类似于可以在本网站上看到的效果。

4

0 回答 0