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实现的飞速中文网小说下载脚本
Apr 23 Python
Python中Django框架下的staticfiles使用简介
May 30 Python
python中判断文件编码的chardet(实例讲解)
Dec 21 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
Python实现不规则图形填充的思路
Feb 02 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
python 下载m3u8视频的示例代码
Nov 11 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
May 20 Python
Python语言内置数据类型
Feb 24 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
php抓取https的内容的代码
2010/04/06 PHP
php的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
Javascript表达式中连续的 && 和 || 之赋值区别
2010/10/17 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
使用Ajax与服务器(JSON)通信实例
2016/11/04 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
Pycharm远程调试openstack的方法
2017/11/21 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
python PIL模块的基本使用
2020/09/29 Python
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
房产销售经理职责
2013/12/20 职场文书
总经理工作职责范文
2014/03/14 职场文书
网络优化专员求职信
2014/05/04 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
基于Python实现nc批量转tif格式
2022/08/14 Python