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 相关文章推荐
Linux下Python获取IP地址的代码
Nov 30 Python
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
python实现简单登陆流程的方法
Apr 22 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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函数 serialize()和unserialize()
2012/02/04 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
PHP发送短信代码分享
2015/08/11 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
python基础教程之字典操作详解
2014/03/25 Python
python实现简单ftp客户端的方法
2015/06/28 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
django云端留言板实例详解
2019/07/22 Python
怎么快速自学python
2020/06/22 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
外语系毕业生找工作的求职信
2013/11/28 职场文书
高中学生期末评语
2014/04/25 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
旷课检讨书范文
2015/01/27 职场文书
工作简报怎么写
2015/07/21 职场文书
文明上网主题班会
2015/08/14 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
python批量更改目录名/文件名的方法
2021/04/18 Python