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标准日志模块logging的使用方法
Nov 01 Python
python实现百度关键词排名查询
Mar 30 Python
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
Python性能优化技巧
Mar 09 Python
初步剖析C语言编程中的结构体
Jan 16 Python
Python编程把二叉树打印成多行代码
Jan 04 Python
Python 创建空的list,以及append用法讲解
May 04 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
python如何实现从视频中提取每秒图片
Oct 22 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 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实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
php给数组赋值的实例方法
2019/09/26 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
ajaxfileupload.js实现上传文件功能
2019/04/19 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
Python列表和元组的定义与使用操作示例
2017/07/26 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
拉拉队口号
2014/06/16 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
解析Java中的static关键字
2021/06/14 Java/Android
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
一文解答什么是MySQL的回表
2022/08/05 MySQL