Pyqt中,如何在QScrollArea逐项顺序(比如从上到下)添加QLabel?

如上,请问Pyqt中,如何在QScrollArea逐项顺序添加QLabel?后面添加的标签自动排列在前面的标签后面。
我的想法是,是否有现成的(我还没有查到)方法可以给出滚动区域的标签数量。如果没有这个数量,后面添加的标签始终都是在同一位置覆盖前面的标签。如果有了这个数量,我就可以让后面添加的标签都move到相应的位置。
谢谢!

要实现后面添加的标签自动排列在前面的标签后面,可以在每次添加新的QLabel时,将其插入到QVBoxLayout的末尾。

以下是示例代码

python
Copy code
from PyQt5.QtWidgets import QApplication, QMainWindow, QScrollArea, QWidget, QVBoxLayout, QLabel

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 创建滚动区域
        scroll_area = QScrollArea(self)
        self.setCentralWidget(scroll_area)

        # 创建用于放置QLabel的垂直布局
        vbox = QVBoxLayout()
        vbox.setAlignment(Qt.AlignTop)  # 将垂直布局的对齐方式设置为顶部对齐
        vbox.setSpacing(10)  # 设置QLabel之间的间距
        vbox.setContentsMargins(10, 10, 10, 10)  # 设置垂直布局的边距

        # 将垂直布局设置为滚动区域的小部件
        widget = QWidget()
        widget.setLayout(vbox)
        scroll_area.setWidget(widget)

        # 添加QLabel
        for i in range(10):
            label = QLabel(f"Label {i}")
            vbox.addWidget(label)  # 将QLabel添加到垂直布局的末尾

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

在上面的代码中,我们首先创建了一个QScrollArea对象,然后创建了一个垂直布局QVBoxLayout,并将其设置为滚动区域的小部件。在每次添加新的QLabel时,我们使用addWidget()方法将其插入到QVBoxLayout的末尾,从而实现了逐项顺序添加QLabel的效果,并且后面添加的标签自动排列在前面的标签后面。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^