如何在 PyQt5 中拉伸 QLabel

How to stretch QLabel in PyQt5

如何更改以下代码以使 QLabel 拉伸到 window 的宽度?

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class Window(QMainWindow):
  def __init__(self):
    super().__init__()
    self.setGeometry(100, 100, 200, 100)
    self.label = QLabel('Hello World!', self)
    self.label.setAlignment(Qt.AlignCenter)
    self.label.setStyleSheet('font-size: 12pt; background-color: red')
    self.show()

app = QApplication([])
win = Window()
app.exec()

你可以使用 sizePolicy

self.label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)

非常感谢您的回答。该问题现已通过以下代码更改解决

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class Window(QWidget):
  def __init__(self):
    super().__init__()    
    self.setGeometry(100, 100, 200, 100)
    self.label = QLabel('Hello World!', self)
    self.label.setAlignment(Qt.AlignCenter)
    self.label.setStyleSheet('font-size: 12pt; background-color: red')

    self.box_layout = QHBoxLayout()
    self.box_layout.addWidget(self.label)
    self.setLayout(self.box_layout)

    self.show()

app = QApplication([])
win = Window()
app.exec()

编辑: 布局 -> box_layout

作为关于 QMainWindow says 的文档,您必须为其设置一个中央小部件:

Creating a main window without a central widget is not supported. You must have a central widget even if it is just a placeholder.

问题是您需要 layout manager 才能在父项中正确调整小部件大小,通常不鼓励仅手动设置小部件几何形状。

您将标签创建为直接子项,因此它不知道其父项大小的变化。
只需将标签设置为中央小部件即可。

    self.setCentralWidget(self.label)

否则,您可以使用 容器 小部件,设置布局并为其添加标签,但您仍然必须设置中央小部件。

central = QWidget()
layout = QVBoxLayout(central)
layout.addWidget(self.label)
self.setCentralWidget(central)

另一种方法是直接使用 QWidget 而不是像您在回答中所做的那样使用 QMainWindow。