我正在尝试使用 PyQt6 让按钮在标签下方居中。我也希望它在调整窗口大小时起作用。预先感谢您!
layout = QVBoxLayout()
self.welcome_label = QLabel("Welcome to Application!", self)
self.welcome_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.welcome_label.setFont(QFont('Arial', 30))
layout.addWidget(self.welcome_label)
self.start_button = QPushButton('Start')
self.start_button.setFixedSize(QSize(100,30))
layout.addWidget(self.start_button)
self.setLayout(layout)
当前外观和指向我想要按钮所在位置的箭头:
我尝试过添加间隔、删除边距、使用屏幕尺寸信息来更改几何位置,但没有成功。
至少在使用垫片方面您的想法是正确的,您只需要学习如何有效地使用它们即可。
目前您有 1 个布局,包含 2 个部分:
-------------
| |
|< label >|
| |
-------------
|<button> |
-------------
我个人发现让小部件做你想做的事情可能很棘手。正如您所发现的,标签可以对齐,但按钮不起作用。
不使用对齐,而是依赖具有拉伸的布局要容易得多。两侧的两个拉伸将使小部件居中。
--------------------
|<-->| widget |<-->|
--------------------
为了防止标签占据太多高度,请在按钮下方添加拉伸以将所有内容向上推。
-----------------
|<label layout >|
-----------------
|<button layout>|
-----------------
| ^ |
| v |
这是结果:
layout = QVBoxLayout()
self.welcome_label = QLabel("Welcome to Application!", self)
self.welcome_label.setFont(QFont('Arial', 30))
welcome_layout = QHBoxLayout()
welcome_layout.addStretch()
welcome_layout.addWidget(self.welcome_label)
welcome_layout.addStretch()
layout.addLayout(welcome_layout)
self.start_button = QPushButton('Start')
self.start_button.setFixedSize(QSize(100,30))
start_layout = QHBoxLayout()
start_layout.addStretch()
start_layout.addWidget(self.start_button)
start_layout.addStretch()
layout.addLayout(start_layout)
layout.addStretch()
self.setLayout(layout)
默认情况下,所有布局都会添加填充,如果您需要从每个小部件周围删除它,则只需使用
child_layout.setContentsMargins(0, 0, 0, 0)
。