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获取一组数据里最大值max函数用法实例
May 26 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
python实战教程之自动扫雷
Jul 13 Python
从0开始的Python学习016异常
Apr 08 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
Python安装whl文件过程图解
Feb 18 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
Python2.6版本pip安装步骤解析
Aug 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
PHP 开源框架22个简单简介
2009/08/24 PHP
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
分享PHP header函数使用教程
2013/09/05 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
Yii核心验证器api详解
2016/11/23 PHP
php获取excel文件数据
2017/04/21 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
bootstrap weebox 支持ajax的模态弹出框
2017/02/23 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
Python Socket传输文件示例
2017/01/16 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
Python根据服务获取端口号的方法
2019/09/25 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
python 简单的调用有道翻译
2020/11/25 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
运动会广播稿500字
2014/01/28 职场文书
政治思想表现评语
2014/05/04 职场文书
技术支持岗位职责
2015/02/13 职场文书
护士求职简历自我评价
2015/03/10 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
致短跑运动员加油稿
2015/07/21 职场文书