0

我在使用中央小部件时遇到了一些问题,我试图将 LabelTitle 定位在与中央小部件顶部重叠的位置,因此它看起来像一个小框标题,但由于某种原因,我无法弄清楚如何拉伸布局和中央小部件顶部之间的空间。

我尝试使用 Frame 或 layout.setRowStretch 但它对我不起作用

class WindowEtiquette(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setFixedSize(460, 350)
        
        self._add_widgets()
        
    def _add_widgets(self):
        self.CuadroLayout = QGridLayout()
        
        #Generando elementos y layouts
        
        self.TituloLayout = QGridLayout()
        self.labelTitulo = QLabel("Formato de la dirección")
        self.labelTitulo.setObjectName("EtiquetaTitulo")
        self.TituloLayout.addWidget(self.labelTitulo, 0, 0, Qt.AlignCenter)
        
       
        self.CuadroLayout.addLayout(self.TituloLayout, 0, 0, alignment=Qt.AlignTop)   

        self.widgetCentral = QWidget()
        self.widgetCentral.setObjectName("FondoEtiqueta")
        self.widgetCentral
        
        self.widgetCentral.setLayout(self.CuadroLayout)
        self.setCentralWidget(self.widgetCentral)      

对象名称在 CSS 文件中,我没有在其中添加任何边距或填充

在此处输入图像描述

我知道也许我不应该太担心 GUI,但我想看看我是否能解决这个问题

4

1 回答 1

0

对不起,我是这个地方的新手,所以我想我跳过了结论,如果代码太大,我很抱歉,我有点匆忙,所以我做的一团糟,但是在这里这是:

class VentanaEtiqueta(QMainWindow):
    def __init__(self):
        #Valores iniciales de la ventana
        super().__init__()
        self.setFixedSize(460, 340)
        
        #Función de generar elementos
        self._agregar_Componentes()
        
    def _agregar_Componentes(self):
        self.datos = cargarDatos(ARCH_CLIENTES) #Archivo de clientes
        
        #Generando layout padre
        self.CuadroLayout = QGridLayout()
        
        #Generando elementos y layouts
        
        self.TituloLayout = QGridLayout()
        self.labelTitulo = QLabel("Formato de la dirección")
        self.labelTitulo.setObjectName("EtiquetaTitulo")
        self.TituloLayout.addWidget(self.labelTitulo, 0, 0)
        
        
        self.NombreSeccion = QGridLayout()
        self.NombreLabel = QLabel("Nombre: ")
        self.NombreComboBox = QComboBox()
        self.NombreLabel.setObjectName("Secciones"), self.NombreComboBox.setObjectName("Seleccionador")
        self.NombreComboBox.setEditable(True)
        self.NombreComboBox.setPlaceholderText("Céd-NombreCompleto")
        
        #Creando un autocompletador para el QComboBox
        self.completador = QCompleter(obtenerCedula_Nombres(self.datos), self) 
        self.completador.setCaseSensitivity(Qt.CaseSensitive)
        self.NombreComboBox.setCompleter(self.completador)
        
        self.NombreSeccion.setContentsMargins(10, 5, 20, 15)
        self.NombreSeccion.setSpacing(20)
        self.NombreSeccion.addWidget(self.NombreLabel, 0, 0, Qt.AlignLeft)
        self.NombreSeccion.addWidget(self.NombreComboBox, 0, 1)
        
        self.NombreComboBox.currentTextChanged.connect(self._autoCompletarINFO)
        
        
        self.DireccionE_Seccion = QGridLayout()
        self.dirEspefLabel, self.dirEspefLineEdit = QLabel("Dirección específica: "), QLineEdit()
        self.dirEspefLabel.setObjectName("Secciones"), self.dirEspefLineEdit.setObjectName("Editor")
        self.dirEspefLineEdit.setDisabled(True)
        self.DireccionE_Seccion.setContentsMargins(10, 0, 20, 15)
        self.DireccionE_Seccion.setSpacing(20)
        self.DireccionE_Seccion.addWidget(self.dirEspefLabel, 0, 0, Qt.AlignLeft)
        self.DireccionE_Seccion.addWidget(self.dirEspefLineEdit, 0, 1)
        
        self.DireccionG_Seccion = QGridLayout()
        self.dirGenLabel, self.dirGenLineEdit = QLabel("Dirección general: "), QLineEdit()
        self.dirGenLabel.setObjectName("Secciones"), self.dirGenLineEdit.setObjectName("Editor")
        self.dirGenLineEdit.setDisabled(True)
        self.DireccionG_Seccion.setContentsMargins(10, 0, 20, 15)
        self.DireccionG_Seccion.setSpacing(20)
        self.DireccionG_Seccion.addWidget(self.dirGenLabel, 0, 0, Qt.AlignLeft)
        self.DireccionG_Seccion.addWidget(self.dirGenLineEdit, 0, 1)

        self.CodigoSeccion = QGridLayout()
        self.CodLabel, self.CodLineEdit = QLabel("Codigo: "), QLineEdit()
        self.CodLabel.setObjectName("Secciones"), self.CodLineEdit.setObjectName("Editor")
        self.CodLineEdit.setDisabled(True)
        self.CodigoSeccion.setContentsMargins(10, 0, 20, 0)
        self.CodigoSeccion.setSpacing(20)
        
        self.CodigoSeccion.addWidget(self.CodLabel, 0, 0, Qt.AlignLeft)
        self.CodigoSeccion.addWidget(self.CodLineEdit, 0, 1)
        
        self.PaisSeccion = QGridLayout()
        self.paisLabel = QLabel("Costa Rica")
        self.paisLabel.setObjectName("Secciones")
        self.PaisSeccion.setSpacing(20)
        self.PaisSeccion.setContentsMargins(10, 0, 20, 5)
        self.PaisSeccion.addWidget(self.paisLabel, 0, 0, Qt.AlignLeft)
        
        self.Boton = QPushButton("Generar PDF")
        self.Boton.setObjectName("GenerarPDF")

        self.CuadroLayout.addLayout(self.TituloLayout, 0, 0, alignment=Qt.AlignTop)   
        self.CuadroLayout.addLayout(self.NombreSeccion, 1, 0)
        self.CuadroLayout.addLayout(self.DireccionE_Seccion, 2, 0)
        self.CuadroLayout.addLayout(self.DireccionG_Seccion, 3, 0)
        self.CuadroLayout.addLayout(self.CodigoSeccion, 4, 0)
        self.CuadroLayout.addLayout(self.PaisSeccion, 5, 0)
        self.CuadroLayout.addWidget(self.Boton, 6, 0, Qt.AlignCenter)

于 2022-01-28T21:27:30.857 回答