Как добиться отсутствия разрыва между QLineEdit и QLineEdit в pyqt - PullRequest
0 голосов
/ 28 февраля 2020

В случае я добавил два QLineEdits с горизонтальной разметкой. Стиль QLineEdit установлен только для верхней и нижней границ. Но между верхней и нижней границами двух кубов есть разрыв. Как я могу сделать верхнюю и нижнюю границы двух QLineEdits вместе без пробелов?

import sys
from PyQt4 import QtGui


class Edit(QtGui.QLineEdit):
    def __init__(self, text):
        super(Edit, self).__init__()
        self.setText(text)
        self.setFixedSize(200, 40)
        self.setStyleSheet("""*{border-width: 1px;
                                    border-style: solid;
                                    border-color: red;
                                    border-left:none;
                                    border-right:none;
                                    margin:0px;
                                    padding:0px;
                                    }""")


class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):
        h = QtGui.QHBoxLayout()
        a = Edit("Hello World")
        b = Edit("Hello World")
        h.addWidget(a)
        h.addWidget(b)
        h.setContentsMargins(0, 0, 0, 0)
        h.addStretch(1)
        self.setLayout(h)
        self.setGeometry(100, 100, 500, 500)
        self.show()


def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

1 Ответ

1 голос
/ 29 февраля 2020

Если я понимаю, вы хотите, чтобы ваши виджеты «Правка» эффективно отображались как единые без зазора между ними?

У вашего QHBoxLayout есть значение по умолчанию для интервала, которое используется для добавления промежутка между виджеты. Вы очищаете contentsMargins (пространство полей, используемое по краю макета), но расстояние между виджетами все равно будет там, как продиктовано вашим текущим стилем.

Добавьте setSpacing(0) для очистки это:

def initUI(self):
    h = QtGui.QHBoxLayout()
    a = Edit("Hello World")
    b = Edit("Hello World")
    h.addWidget(a)
    h.addWidget(b)
    h.setContentsMargins(0, 0, 0, 0)
    h.setSpacing(0)
    h.addStretch(1)
    self.setLayout(h)
    self.setGeometry(100, 100, 500, 500)
    self.show()
...