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下利用OpenCV来旋转图像的教程
Apr 16 Python
用于统计项目中代码总行数的Python脚本分享
Apr 21 Python
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
redis之django-redis的简单缓存使用
Jun 07 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
Django使用rest_framework写出API
May 21 Python
Python getsizeof()和getsize()区分详解
Nov 20 Python
Django如何创作一个简单的最小程序
May 12 Python
python树莓派通过队列实现进程交互的程序分析
Jul 04 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 Python
使用python创建股票的时间序列可视化分析
Mar 03 Python
python中filter,map,reduce的作用
Jun 10 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常用的文件操作函数经典收藏
2013/04/02 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
PHP分页类集锦
2014/11/18 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
php xhprof使用实例详解
2019/04/15 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
ext实现完整的登录代码
2008/08/08 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
python中的sort方法使用详解
2014/07/25 Python
Python脚本实现自动发带图的微博
2016/04/27 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
Python实现文件内容批量追加的方法示例
2017/08/29 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
教师绩效工资方案
2014/02/01 职场文书
施工材料员岗位职责
2014/02/12 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
村班子对照检查材料
2014/08/18 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
学校重阳节活动总结
2015/03/24 职场文书
公司欠款证明
2015/06/24 职场文书
关于军训的感想
2015/08/07 职场文书