QLabel 将第二次调用 setText() 的文本长度限制为第一个值的长度

QLabel limiting text length on second calling setText() to the length of the first value

在 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? :)")

您必须使用 change_label 中的 self.Label.resize(width, height) 手动更改大小。但是你不知道 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()