在滚动区域小部件的PyQt5中添加n列

时间:2019-08-13 11:06:05

标签: python user-interface pyqt5

我需要在滚动区域或类似区域内创建n个窗口小部件,并且此窗口小部件应包含标签和删除按钮或类似内容。我还没有实现如何获得n个标签的方法,它们没有显示。

这应该添加小部件:

name = QtWidgets.QLabel()
name.setText(str(ui.nombre.toPlainText))
ui.elementos.addWidget(name, 0, 0, 1, 1)

这是定义“ elementos”的地方:

self.scroll = QtWidgets.QScrollArea(self.gridLayoutWidget_2)
self.elementos = QtWidgets.QGridLayout()
self.elementos.setGeometry(QtCore.QRect(0, 0, 500, 400))
self.Punto.addWidget(self.scroll, 4, 0, 1, 3)

Punto在这里定义:

self.gridLayoutWidget_2 = QtWidgets.QWidget(self.widget_central)
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(1004, 105, 300, 400))
self.Punto = QtWidgets.QGridLayout(self.gridLayoutWidget_2)

完整代码:https://github.com/Jaime02/Proyecto-de-investigacion-2019-Dibujo-tecnico/blob/experimental/error

1 个答案:

答案 0 :(得分:2)

您正在创建网格布局并向其添加小部件,但是您并未将网格布局用作任何小部件的布局。要在滚动区域中显示网格布局,您需要创建一个单独的窗口小部件,将此窗口小部件的布局设置为网格布局,然后在滚动区域中显示该窗口小部件,例如在UiVentana.__init__中,您需要替换

self.scroll = QtWidgets.QScrollArea(self.gridLayoutWidget_2)
self.elementos = QtWidgets.QGridLayout()
self.elementos.setGeometry(QtCore.QRect(0, 0, 500, 400))

使用

self.scroll = QtWidgets.QScrollArea(self.gridLayoutWidget_2)

# create widget to display in scroll area
self.scroll_widget = QtWidgets.QWidget()
self.scroll_widget.resize(500, 400)

# create grid layout and use it as the layout of self.scroll_widget
self.elementos = QtWidgets.QGridLayout()
self.scroll_widget.setLayout(self.elementos)

# display self.scroll_widget in the scroll area
self.scroll.setWidget(self.scroll_widget)

此外,在Renderizador.crear_punto中,您需要使用name.setText(str(ui.nombre.toPlainText()))(带括号)而不是name.setText(str(ui.nombre.toPlainText))