QLabel адаптирует свое содержимое на основе (возможного) родительского менеджера компоновки, но вы его не использовали, поэтому он не знает, как правильно отобразить себя или адаптировать свой размер для этого.
Самое простое решение - вызвать label.adjustSize()
, что приведет к изменению размера метки, чтобы она могла отображать свое содержимое.
Хотя это не очень хорошая идея: вы пытаетесь использовать фиксированную позицию для виджета (что обычно считается плохим делом по множеству причин); В результате текст метки будет слишком большим, и пользователь изменит размер окна, текст не будет полностью видимым, как должно быть, и метка не будет знать, как изменить размер или, в конечном итоге, обернуть его содержимое, чтобы гарантировать, что все его текст показан.
Подход лучше заключается в использовании менеджера компоновки , но это решение зарезервировано для более простых виджетов (таких как QWidget или QDialog) ; QMainWindow не работает так же , и для него требуется установить центральный виджет , чтобы обеспечить правильное отображение и управление его содержимым.
В вашем случае , вы можете просто использовать self.setCentralWidget(label)
, но это помешает вам добавить любой другой виджет в ваше окно.
Вместо этого следует использовать виджет «контейнер», и этот виджет будет установлен как центральный для главное окно; затем вы можете установить макет для этого виджета и добавить к нему метку:
def window():
app = QApplication(sys.argv)
win = QMainWindow()
central = QWidget()
win.setCentralWidget(central)
layout = QVBoxLayout()
central.setLayout(layout)
# alternatively, the above is the same as this:
# layout = QVBoxLayout(central)
label = QtWidgets.QLabel(win)
label.setText("my first label!")
layout.addWidget(label)
# ...