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 相关文章推荐
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
Python3.5.3下配置opencv3.2.0的操作方法
Apr 02 Python
Pandas中把dataframe转成array的方法
Apr 13 Python
Python实现定时精度可调节的定时器
Apr 15 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
python Django 创建应用过程图示详解
Jul 29 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
Python实现智慧校园自动评教全新版
Jun 18 Python
python_tkinter事件类型详情
Mar 20 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的几个常用数字判断函数代码
2012/04/24 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
PHP实现的简单日历类
2014/11/29 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
jQuery实现推拉门效果
2020/10/19 jQuery
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
python list排序的两种方法及实例讲解
2017/03/20 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
详解Python3中ceil()函数用法
2019/02/19 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
租赁意向书范本
2014/04/01 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
大学生求职意向书
2015/05/11 职场文书
金砖之国观后感
2015/06/11 职场文书
学前班教学反思
2016/02/24 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python