默认情况下,QVBoxLayout(或QHBoxLayout)会在其管理的控件之间添加一些间距,本文教你怎么调整。
以按钮为例,看看默认的效果:
1、设置布局的对齐方式
button_layout.setAlignment(Qt.AlignLeft | Qt.AlignTop) # 将内容对齐到右上角
2、设置布局的边距和间距属性
button_layout.setContentsMargins(0, 0, 0, 0) # 设置布局边距为0
button_layout.setSpacing(0) # 设置控件之间的间距为0,以确保按钮紧贴
看看效果:
完整代码:
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 设置窗口标题和大小
self.setWindowTitle('示例')
self.setGeometry(300, 300, 300, 300)
# 创建主布局
main_layout = QHBoxLayout()
# 设置中央部件的布局
central_widget = QWidget()
central_widget.setLayout(main_layout)
self.setCentralWidget(central_widget)
# 创建 button_container 并设置其布局
button_container = QWidget()
button_container.setFixedSize(150, 300)
button_container.setStyleSheet("QWidget { border: 1px solid blue; }")
button_layout = QVBoxLayout()
button_layout.setContentsMargins(0, 0, 0, 0) # 设置布局边距为0
button_layout.setAlignment(Qt.AlignLeft | Qt.AlignTop) # 将内容对齐到右上角
button_layout.setSpacing(0) # 设置控件之间的间距为0,以确保按钮紧贴
self.buttons = [QPushButton(f'Button{i+1}') for i in range(3)]
# 将按钮添加到垂直布局
for button in self.buttons:
button.setFixedSize(50, 50)
button_layout.addWidget(button)
button_container.setLayout(button_layout)
# 将 button_container 添加到主布局
main_layout.addWidget(button_container)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MainWindow()
ex.show()
app.exec_()