python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例


Posted in Python onMarch 06, 2020

PyQt5布局控件QGridLayout简介

QGridLayout(网格布局)是将窗口分割成行和列的网格来进行排列,通常可以使用函数addWidget()将被管理的控件(Widget)添加到窗口中,或者使用addLayout()函数将布局(layout)添加到窗口中,也可以通过addWIdget()函数对所添加的控件设置行数与列数的跨越,最后实现网格占据多个窗格

QGridLayout类中常用的方法

方法 描述
addWidget(QWidget Widget,int row,int col,int alignment=0) 给网格布局添加部件,设置指定的行和列,起始位置的默认值为(0,0)
widget:所添加的控件
row:控件的行数,默认从0开始
column:控件的列数,默认从0开始
alignment:对齐方式
addWidget(QWidget widget,int fromRow,int fromColulmn,int rowSpan,int columnSpan,Qt.Alignment alignment=0) 所添加的的控件跨越很多行或者列的时候,使用这个函数
widget:所添加的控件
fromRow:控件的起始行数
fronColumn:控件的起始列数
rowSpan:控件跨越的行数
column:控件跨越的列数
alignment:对齐方式
setSpacing(int spacing) 设置软件在水平和垂直方向的间隔

QGridLayout单一的网格单元格实例

import sys
from PyQt5.QtWidgets import QApplication ,QWidget , QGridLayout, QPushButton
class Winform(QWidget):
  def __init__(self,parent=None):
    super(Winform,self).__init__(parent)
    self.initUI()
  def initUI(self):      
    #1创建QGridLayout的实例,并设置窗口的布局
    grid = QGridLayout() 
    self.setLayout(grid) 
    #2创建按钮的标签列表
    names = ['Cls', 'Back', '', '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.move(300, 150) 
    self.setWindowTitle('网格布局管理例子') 
if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    form = Winform()
    form.show()
    sys.exit(app.exec_())

运行效果图如下

python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例

第一组代码:创建QGridLayout的实例,并设置窗口的布局

第二组代码:创建按钮的标签列表

第三组代码:在网格中创建一个位置列表

第四组代码:创建按钮并通过addWIdget()方法添加到布局中

QGridLayout跨越行和列的网格单元格实例

import sys
from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit,  QTextEdit, QGridLayout, QApplication) 
class Winform(QWidget):
  def __init__(self,parent=None):
    super(Winform,self).__init__(parent)
    self.initUI()
  def initUI(self):      
    titleLabel = QLabel('标题') 
    authorLabel = QLabel('提交人') 
    contentLabel = QLabel('申告内容') 
    titleEdit = QLineEdit() 
    authorEdit = QLineEdit() 
    contentEdit = QTextEdit() 
    grid = QGridLayout() 
    grid.setSpacing(10) 
    grid.addWidget(titleLabel, 1, 0) 
    grid.addWidget(titleEdit, 1, 1) 
    grid.addWidget(authorLabel, 2, 0) 
    grid.addWidget(authorEdit, 2, 1) 
    grid.addWidget(contentLabel, 3, 0) 
    grid.addWidget(contentEdit, 3, 1, 5, 1) 
    self.setLayout(grid)  
    self.setGeometry(300, 300, 350, 300) 
    self.setWindowTitle('故障申告')
if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    form = Winform()
    form.show()
    sys.exit(app.exec_())

运行效果示意图如下

python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例

代码分析

把titleLabel放在QGridLayout布局的第一行第0列

grid.addWidget(titleLabel, 1, 0)  

把titleEditl放在QGridLayout布局的第一行第1列

grid.addWidget(titleEdit, 1, 1)  

把contentLabel放在QGridLayout布局的第3行第0列

grid.addWidget(contentLabel, 3, 0)  

把contentEdit放在QGridLayout布局的第3行第1列,跨越5行1列

grid.addWidget(contentEdit, 3, 1, 5, 1)

本文主要介绍了PyQt5布局控件QGridLayout详细使用方法与实例,更多关于PyQt5布局控件知识请查看下面的相关链接

Python 相关文章推荐
python正则分组的应用
Nov 10 Python
python基础教程之常用运算符
Aug 29 Python
Python基于Tkinter的HelloWorld入门实例
Jun 17 Python
用Python编写简单的微博爬虫
Mar 04 Python
python 容器总结整理
Apr 04 Python
基于python内置函数与匿名函数详解
Jan 09 Python
python生成带有表格的图片实例
Feb 03 Python
django框架model orM使用字典作为参数,保存数据的方法分析
Jun 24 Python
python3实现绘制二维点图
Dec 04 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
python中线程和进程有何区别
Jun 17 Python
python3 xpath和requests应用详解
Mar 06 #Python
python 装饰器功能与用法案例详解
Mar 06 #Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 #Python
利用 Python ElementTree 生成 xml的实例
Mar 06 #Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 #Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 #Python
Python yield的用法实例分析
Mar 06 #Python
You might like
德生H-501的评价与改造
2021/03/02 无线电
10个实用的PHP正则表达式汇总
2014/10/23 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
PHP实现微信退款功能
2018/10/02 PHP
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
Python编程中的异常处理教程
2015/08/21 Python
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
Django 反向生成url实例详解
2019/07/30 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
大学生毕业求职信
2014/06/12 职场文书
大学生求职信例文
2014/06/29 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
2014年个人总结范文
2015/03/09 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
让子弹飞观后感
2015/06/11 职场文书
呐喊读书笔记
2015/06/30 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
pandas进行数据输入和输出的方法详解
2022/03/23 Python