PyQt布局细节:控件对齐和紧贴放置

默认情况下,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_()
  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值