常用的布局:栅格布局

简介

最常用的还是栅格布局了。这种布局是把窗口分为行和列。创建和使用栅格布局,需要使用QGridLayout模块。

关键代码

        # 1. QGridLayout实例,并把它放到程序窗口里
        grid = QGridLayout()
        self.setLayout(grid)
        
        # 2. 这是我们将要使用的按钮的名称。
        names = ['Cls', 'Bck', '', 'Close',
                 '7', '8', '9', '/',
                 '4', '5', '6', '*',
                 '1', '2', '3', '-',
                 '0', '.', '=', '+']
        
        # 3. 创建按钮位置列表。
        positions = [(i, j) for i in range(5)for j in range(4)]
        
        # 4. 创建按钮,并使用addWidget()方法把按钮放到布局里面。
        for position, name in zip(positions, names):
            if name == '':
                continue
            button = QPushButton(name)
            grid.addWidget(button, *position)

完整代码

import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QGridLayout, QWidget, QDesktopWidget


class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        # 1. QGridLayout实例,并把它放到程序窗口里
        grid = QGridLayout()
        self.setLayout(grid)

        # 2. 这是我们将要使用的按钮的名称。
        names = ['Cls', 'Bck', '', 'Close',
                 '7', '8', '9', '/',
                 '4', '5', '6', '*',
                 '1', '2', '3', '-',
                 '0', '.', '=', '+']

        # 3. 创建按钮位置列表。
        positions = [(i, j) for i in range(5)for j in range(4)]

        # 4. 创建按钮,并使用addWidget()方法把按钮放到布局里面。
        for position, name in zip(positions, names):
            if name == '':
                continue
            button = QPushButton(name)
            grid.addWidget(button, *position)

        self.resize(650, 450)
        self.move(450, 300)
        self.center()
        self.show()

    def center(self):
        qr = self.frameGeometry()  # 拿到程序的主框架
        qp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(qp)
        self.move(qr.topLeft())


# 程序主入口定义好
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王摇摆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值