QLabel ограничивает длину текста при втором вызове setText () длиной первого значения - PullRequest
1 голос
/ 22 мая 2019

При установке метки в начале QWidget текст отображается правильно, однако при изменении текста нажатием кнопки текст отображается не полностью.Он ограничен длиной символа старой строки.Как это можно решить?

Заранее спасибо!

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        self.setGeometry(500, 500, 500, 420)

        Button("Change it!", self).set_tool_tip("Change the label text").resize().move(0, 40).on_click(
            self.change_label)

        self.Label = QLabel(self)
        self.Label.setText("I'm going to change and get bigger!")
        self.Label.move(0, 65)

    def change_label(self):
        self.Label.setText("I'm bigger then I was before, unfortunately I'm not fully shown. Can you help me? :)")

1 Ответ

1 голос
/ 22 мая 2019

Вы должны изменить размер вручную, используя self.Label.resize(width, height) в change_label. Но вы не знаете, какое значение использовать как width

Лучше использовать любой менеджер макетов, и он автоматически изменит размер виджета.

Пример с менеджером макета Вертикальные рамки - QVBoxLayout

from PyQt5.QtWidgets import *

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):

        layout = QVBoxLayout()
        self.setLayout(layout)

        self.button = QPushButton("Change it!", self)
        self.button.clicked.connect(self.change_label)
        layout.addWidget(self.button)

        self.label = QLabel(self)
        self.label.setText("I'm going to change and get bigger!")
        layout.addWidget(self.label)

    def change_label(self):
        self.label.setText("I'm bigger then I was before, unfortunately I'm not fully shown. Can you help me? :)")


app = QApplication([])
main = MainWindow()
main.show()
app.exec()
...