如何在 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。
如何更改以下代码以使 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。