实战PyQt5: 019-布局管理之QGridLayout

本文深入解析了QGridLayout在Qt GUI开发中的应用,介绍了如何通过addWidget和addWidget方法创建并布局计算器界面,展示了跨越行列的部件添加技巧。通过实例学习了使用循环和指定最小尺寸的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QGridLayout简介

网格布局QGridLayout 将窗口分割成行和列来进行排列,通常使用方法addWidget()将部件添加到网格布局中,或者使用方法addLayout()将一个布局添加到网格布局中,还可以通过对所添加的控件的行数与列数的跨越,来实现一个部件占据多个单元格。一个常规的QGridLayout布局如下图:

实战PyQt5: 019-布局管理之QGridLayout

QGridLayout布局示意图

QGridLayout常用方法1:

addWidget(widet , row, col, alignment)

该方法给给网格布局添加部件,设置指定的行和列,起始位置的默认值为(0,0),其参数含义为:

  • widget:所添加的控件;
  • row:控件的行数,默认从0开始;
  • column:控件的列数,默认从0开始;
  • alignment:对齐方式.。

QGridLayout常用方法2:

addWidget(widget, fromRow, fromColulmn, rowSpan, columnSpan, alignment)

当所添加的的控件跨越很多行或者列的时候,使用这个函数,其参数含义为:

  • widget:所添加的控件;
  • fromRow:控件的起始行数;
  • fromColumn:控件的起始列数;
  • rowSpan:控件跨越的行数;
  • column:控件跨越的列数;
  • alignment:对齐方式.

QGridLayout类继承关系:

实战PyQt5: 019-布局管理之QGridLayout

 

测试QGridLayout

测试QGridLayout布局最直观的例子,就是创建一个计算器界面,创建文件qgridlayout.py, 完整代码如下:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout
 
class DemoGridLayout(QWidget):
    def __init__(self, parent=None):
        super(DemoGridLayout, self).__init__(parent)
        
        # 设置窗口标题
        self.setWindowTitle('实战PyQt5: QGridLayout Demo!')      
        # 设置窗口大小
        self.resize(320, 320)
        
        grid = QGridLayout(self)
        
        #创建前三排的按钮列表,每排5个
        names = ['%', 'CE', 'C','←',
                 '1/x', 'x²', '√x', '÷',
                 '7', '8', '9', '×',
                '4', '5', '6', '-',
                '1','2','3','+',
                '±', '0', '.','=']
       
        #上面四排的位置列表
        pos = [(row,col) for row in range(6) for col in range(4)]
        
        for pos, name in zip(pos, names):
            btn = QPushButton(name, self)
            btn.setMinimumSize(60, 40)
            grid.addWidget(btn, *pos)
        
        self.setLayout(grid)
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = DemoGridLayout()
    window.show()
    sys.exit(app.exec()) 

运行结果如图:

实战PyQt5: 019-布局管理之QGridLayout

QGridLayout测试效果

本文知识点

  • 使用循环语句创建多个部件;
  • 指定按钮的最小显示大小;
  • QGridLayout基本用法。

前一篇: 实战PyQt5: 018-布局管理之QVBoxLayout

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值