PyQt5 Как я могу контролировать интервал QScrollArea? - PullRequest
0 голосов
/ 27 апреля 2020

Интервал между каждым сообщением совпадает с высотой добавляемой метки (по крайней мере, я думаю, что это выглядит так). Я хочу, чтобы все сообщения были на высоте 20 м друг от друга, что соответствует одной строке -высок.

Как я могу это сделать?

Код:

def randomWidgetSetup(self):
    # Chat. ScrollArea
    self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
    self.scrollArea.setGeometry(QtCore.QRect(0, 30, 541, 531))
    self.scrollArea.setFrameShadow(QtWidgets.QFrame.Plain)
    self.scrollArea.setWidgetResizable(True)
    self.scrollArea.setObjectName("scrollArea")
    self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
    self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
    # Body that holds the widgets.
    self.scrollAreaWidgetContents = QtWidgets.QWidget()
    self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
    # Box that holds the widgets.
    self.layout = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents)
    self.scrollAreaWidgetContents.setLayout(self.layout)
    self.scrollArea.setWidget(self.scrollAreaWidgetContents)
    self.layout.addStretch(-1)




def addlabel(self):

    def add(text, lines):
        print(lines)
        label = QtWidgets.QLabel(text)
        label.setStyleSheet("font: 11pt;")
        label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
        label.setFixedSize(540, 20*lines)
        self.lineEdit.setText("")
        self.layout.addWidget(label)

    text = self.lineEdit.text()

    if not text:
        return
    else:

        if len(text) > self.lineLength:
            wordsList = text.split()
            lines = math.ceil(len(text)/self.lineLength)
            lines += math.ceil(lines*2/self.lineLength)
            lineList = [''] * lines
            index = 0
            lineList[0] += wordsList[0]
            print(lines)
            for word in wordsList[1:]:
                if len(lineList[index]) + len(word) + 1 <= self.lineLength:
                    lineList[index] += " " + word
                else:
                    index += 1
                    lineList[index] += "\n" + word
            print(lineList)
            message = ""
            message = message.join(lineList)

            add(message, lines)
        else:
            add(text, 1)

Изображение вывода: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...