【发布时间】:2020-07-25 00:17:18
【问题描述】:
我正在尝试将多个标签添加到 Qscrollarea,但它无法正常工作。我在滚动区域中添加了Qwidget,并在该Qwidget 中添加了标签。我加了self.scrollArea.setWidgetResizable(True)
仍然无法正常工作。
这是我使用 Qtdesigner 创建的文件的(一部分):
self.scrollArea = QtWidgets.QScrollArea(self.gridLayoutWidget)
self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 457, 428))
self.scrollAreaWidgetContents.setMinimumSize(QtCore.QSize(0, 0))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.gridLayoutWidget_2 = QtWidgets.QWidget(self.scrollAreaWidgetContents)
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 441, 431))
self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.gridLayout_2.setSizeConstraint(QtWidgets.QLayout.SetMinAndMaxSize)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.gridLayout_2.setObjectName("gridLayout_2")
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.gridLayout.addWidget(self.scrollArea, 1, 0, 1, 4)
我使用了另一个文件来运行程序:
for i in range(50) :
self.ResultLabel = QtWidgets.QLabel(self.gridLayoutWidget)
self.ResultLabel.setMinimumSize(QtCore.QSize(200, 30))
self.ResultLabel.setWordWrap(True)
self.ResultLabel.setFont(QtGui.QFont('Segoe UI',9))
self.ResultLabel.setText(str(i))
self.gridLayout_2.addWidget(self.ResultLabel, i, 0, 1, 2)
这就是我得到的:
【问题讨论】:
-
为什么要使用第二个子小部件 (
gridLayoutWidget_2)?这完全没有必要,只需将布局设置为scrollAreaWidgetContents。请注意,如果您使用的是由pyuic生成的文件,您应该不要编辑它,因为这些文件应该始终用作导入的模块并且从不修改。阅读有关using Designer 的更多信息。 -
我从未编辑过pyuic生成的文件。我刚刚将网格布局添加到 Designer 的滚动区域中。名称
gridLayoutWidget_2由设计器生成。 -
我从来没有说过你这样做了,但由于你没有提供完整的minimal, reproducible example(你总是应该这样做),我宁愿澄清这一点,因为这是一个常见的错误。
标签: python qt user-interface pyqt5