如上,请问Pyqt中,如何在QScrollArea逐项顺序添加QLabel?后面添加的标签自动排列在前面的标签后面。
我的想法是,是否有现成的(我还没有查到)方法可以给出滚动区域的标签数量。如果没有这个数量,后面添加的标签始终都是在同一位置覆盖前面的标签。如果有了这个数量,我就可以让后面添加的标签都move到相应的位置。
谢谢!
Pyqt中,如何在QScrollArea逐项顺序(比如从上到下)添加QLabel?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
chenshanshan128 2023-03-10 16:51关注要实现后面添加的标签自动排列在前面的标签后面,可以在每次添加新的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的效果,并且后面添加的标签自动排列在前面的标签后面。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报