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设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
python rsa 加密解密
Mar 20 Python
python实现人脸识别经典算法(一) 特征脸法
Mar 13 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
django实现模型字段动态choice的操作
Apr 01 Python
调整Jupyter notebook的启动目录操作
Apr 10 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 Python
详细介绍python操作RabbitMq
Apr 12 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 表单数据的获取代码
2009/03/10 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
JQuery live函数
2010/12/24 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
node中的session的具体使用
2018/09/14 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
python中list常用操作实例详解
2015/06/03 Python
Python线程详解
2015/06/24 Python
简单了解python模块概念
2018/01/11 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
python文字转语音的实例代码分析
2019/11/12 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
不假外出检讨书
2014/01/27 职场文书
家长给学校的建议书
2014/05/15 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
《静夜思》教学反思
2016/02/17 职场文书