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实现根据用户输入从电影网站获取影片信息的方法
Apr 07 Python
Python字符串切片操作知识详解
Mar 28 Python
python采用django框架实现支付宝即时到帐接口
May 17 Python
JPype实现在python中调用JAVA的实例
Jul 19 Python
python实现杨氏矩阵查找
Mar 02 Python
python实现对象列表根据某个属性排序的方法详解
Jun 11 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
python是怎么被发明的
Jun 15 Python
Python: glob匹配文件的操作
Dec 11 Python
python urllib库的使用详解
Apr 13 Python
Python各协议下socket黏包问题原理
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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
python简单读取大文件的方法
2016/07/01 Python
目前最全的python的就业方向
2018/06/05 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
python实现桌面托盘气泡提示
2019/07/29 Python
python set集合使用方法解析
2019/11/05 Python
python中Lambda表达式详解
2019/11/20 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
节省高达65%的城市景点费用:Go City
2019/07/06 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
生日派对邀请函
2014/01/13 职场文书
高二美术教学反思
2014/01/14 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
大学校庆策划书
2014/01/31 职场文书
党校学习自我鉴定
2014/02/24 职场文书
英文请假条
2014/04/11 职场文书
工作求职自荐信
2014/06/13 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
2014年科研工作总结
2014/12/03 职场文书
淮海战役观后感
2015/06/11 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
Python实现随机生成迷宫并自动寻路
2021/06/13 Python
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python