即使使用setspace(0),小部件之间也有空白

2024-09-28 01:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys

data = {'dia': 23, 'mes': 8, 'ano': 2017}

class FormConfigBkpBD(QWidget):

    senha = None
    pathLine = None

    def __init__(self, parent=None,instancia=None):
        super(FormConfigBkpBD, self).__init__(parent)

        mainLayout = QVBoxLayout()

        mainLayout.setSpacing(0)
        mainLayout.setContentsMargins(0, 0, 0, 0)

        self.senha = QLineEdit()
        self.senha.setEchoMode(QLineEdit.Password)
        self.senha.setFixedSize(385, 25)

        self.pathLine = QLineEdit()
        self.pathLine.setFixedSize(355,25)

        self.senha.setContentsMargins(0,0,0,0)
        self.pathLine.setContentsMargins(0,0,0,0)

        mainLayout.addWidget(self.pathLine,0,Qt.AlignTop)
        mainLayout.addWidget(self.senha,0,Qt.AlignTop)

        self.setWindowTitle("Configuração de Backup - Banco de Dados")
        self.setFixedSize(460,640)
        self.setLayout(mainLayout)


def main():

    app = QApplication(sys.argv)

    bd = FormConfigBkpBD()
    bd.show()

    app.exec()


if __name__ == "__main__" :

    main()

上面的代码只显示了两个小部件(QLineEdit),原来的窗口有更多的小部件,这只是用于这里的post。 为什么,即使使用setSpacing(0)setContentsMargins(0,0,0,0)窗口小部件之间也有空间?在


Tags: fromimportselfnonemain部件syspyqt5
1条回答
网友
1楼 · 发布于 2024-09-28 01:23:13

这是因为固定大小的窗口和你使用的布局的结合。垂直布局试图均匀地(除非另有说明)将其所有子级垂直分布并填充整个窗口。在

这里有两个小部件,第一个放入第一个单元格,第二个放入第二个单元格。由于您没有设置任何对齐方式,所以默认行为是存在的,即每个单元格的左上角就是小部件所在的位置。剩下的只是填充布局所属父窗口的空闲空间。在

如果你不想在小部件之间留出空间

  • 或者移除固定大小的窗口

    enter image description here

  • 或者在布局中放置更多的小部件,直到它“满”为止。

第一个选项可能不是您想要的(否则您可能不会首先将其设置为固定大小)。第二个可以通过简单地使用^{}(垂直的)来实现,它将为您处理空白空间,并将小部件推到您希望的顶部:

mainLayout.addStretch(1)

如果需要对其行为进行更多控制,也可以手动添加间隔垫圈:

^{pr2}$

相关问题 更多 >

    热门问题