# _*_ coding:utf-8 _*_
import sys
from PyQt4 import QtGui class Example(QtGui.QWidget):
def __init__(self):
super(Example,self).__init__()
self.grid = QtGui.QGridLayout()
self.initUI()
self.setWindowTitle('grid layout') def initUI(self):
while self.grid.count():
item = self.grid.takeAt(0)
widget = item.widget()
# if widget has some id attributes you need to
# save in a list to maintain order, you can do that here
# i.e.: aList.append(widget.someId)
widget.deleteLater() names=['Cls','Bck','','Close','','','','/','',
'','','*','','2,','','-','','.','=','+'] j=0
pos=[(0,0),(0,1),(0,2),(0,3),
(1,0),(1,1),(1,2),(1,3),
(2,0),(2,1),(2,2),(2,3),
(3,0),(3,1),(3,2),(3,3),
(4,0),(4,1),(4,2),(4,3)]
for iterm in names:
button=QtGui.QPushButton(iterm)
if j==2:
change=QtGui.QPushButton(u'文本编辑器')
self.grid.addWidget(change,0,2)
change.clicked.connect(self.otherUI) else:
self.grid.addWidget(button,pos[j][0],pos[j][1])
j=j+1 self.setLayout(self.grid)
self.resize(300,300)
def otherUI(self):
while self.grid.count():
item = self.grid.takeAt(0)
widget = item.widget()
# if widget has some id attributes you need to
# save in a list to maintain order, you can do that here
# i.e.: aList.append(widget.someId)
widget.deleteLater()
title=QtGui.QLabel('Title')
author=QtGui.QLabel('Author')
review=QtGui.QLabel('Review') titleEdit=QtGui.QLineEdit()
authorEdit=QtGui.QLineEdit()
reviewEdit=QtGui.QTextEdit() self.grid.setSpacing(10) self.grid.addWidget(title,1,0)
self.grid.addWidget(titleEdit,1,1) self.grid.addWidget(author,2,0)
self.grid.addWidget(authorEdit,2,1) self.grid.addWidget(review,3,0)
self.grid.addWidget(reviewEdit,3,1,5,1) back=QtGui.QPushButton(u'返回')
back.clicked.connect(self.initUI)
self.grid.addWidget(back,6,2) self.setLayout(self.grid)
self.resize(300,300) app=QtGui.QApplication(sys.argv)
ex=Example()
ex.show()
sys.exit(app.exec_())

展示了如何通过QGridLayout实现窗体控件布局管理。同时,简单的实现了一下两个界面之间的切换。

解释一下如何删除一个部件管理器的组件:

        while self.grid.count():
item = self.grid.takeAt(0)
widget = item.widget()
# if widget has some id attributes you need to
# save in a list to maintain order, you can do that here
# i.e.: aList.append(widget.someId)
widget.deleteLater()

pyqt布局管理器QGridLayout简单示例的更多相关文章

  1. pyqt布局管理器

    有时候,碰到错误: QWidget::setLayout: Attempting to set QLayout “” on MainWindow “”, which already has a lay ...

  2. Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面

    场景 Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

  3. QT5每日一学(五)QT布局管理器

    Qt中的布局管理器主要包括 QBoxLayout基本布局管理器 QGridLayout栅格布局管理器 QFormLayout窗体布局管理器 而基本布局管理器又分为QHBoxLayout水平布局管理器和 ...

  4. Android布局管理器-使用LinearLayout实现简单的登录窗口布局

    场景 Android布局管理器-从实例入手学习相对布局管理器的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1038389 ...

  5. JAVA简单的网格布局管理器--JAVA基础

    网格布局管理器: GridLayoutDemo.java: import java.awt.GridLayout;import javax.swing.JButton;import javax.swi ...

  6. Java Swing布局管理器GridBagLayout的使用示例 [转]

    GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...

  7. 5、Java Swing布局管理器(FlowLayout、BorderLayout、CardLayout、BoxLayout、GirdBagLayout 和 GirdLayout)

    5.Java-Swing常用布局管理器       应用布局管理器都属于相对布局,各组件位置可随界面大小而相应改变,不变的只是其相对位置,布局管理器比较难以控制,一般只在界面大小需要改是才用,但即使这 ...

  8. Java-Swing常用布局管理器

    http://www.cnblogs.com/hthuang/p/3460234.html   5.Java-Swing常用布局管理器       应用布局管理器都属于相对布局,各组件位置可随界面大小 ...

  9. Qt 布局管理器

    在一个颜值当道的今天,无论买衣服,买车还是追星,颜值的高低已经变成了大家最看重的(不管男性女性都一样,千万别和我说你不是):而对于程序猿来说,开发一款软件,不再只注重逻辑和稳定性,美观和用户友好性也是 ...

随机推荐

  1. LoadRunner 检查点函数总结

    今天我来总结一下Loadrunner中的检查点函数,主要介绍两个函数:web_find()和web_reg_find() 这两个函数均用于内容的查找,但两者也有本质的区别,具体介绍如下: 一.web_ ...

  2. Linux 系统访问控制列表ACL

    常见的文件系统的一般权限(rwx).特殊权限(SUID,SGID,STICK).隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的.而如果希望对某个指定的用户进行单独的权限控制,那么就 ...

  3. openssh入门

    ssh (secure shell),ssh协议支持登录及文件的传输加密防止数据截留! 01.下载 https://www.ssh.com/                               ...

  4. C++ 智能指针Auto_PTR 分析

    C++的动态内存的分配与释放是个挺折磨人的事情,尤其异常分支复杂时(比如一堆try catch中,各catch里需要做delete 掉相关的堆上分配的内存),极有可能产生内存泄露的情况.C++中提供了 ...

  5. iOS微信支付集成

    概述 iOS微信支付集成 详细 代码下载:http://www.demodashi.com/demo/10735.html 支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧(纯 ...

  6. opencv在手机上实现照片背景虚化

    概述 使用androidstudio开发,在手机上实现照片背景虚化 详细 代码下载:http://www.demodashi.com/demo/10599.html 一.准备工作 1.需要下载安装an ...

  7. Java设计模式中的单例模式

    有时候在实际项目的开发中,我们会碰到这样一种情况,该类只允许存在一个实例化的对象,不允许存在一个以上的实例化对象,我们将这种情况称为Java设计模式中的单例模式.设计单例模式主要采用了Java的pri ...

  8. 用UNetbootin轻松把Linux操作系统装进U盘

    转自http://www.hackbase.com/tech/2009-02-14/51197.html1.下载Linux发行版的iso镜像.    如Hiweed GNU/Linux:http:// ...

  9. js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)

    在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”. 1..停止事件冒泡 JavaScript代码 //如果提供了事件对象,则这是一个非IE浏览器if ( ...

  10. 配置Kafka集群和zookeeper集群

    原文链接请参见:http://www.cnblogs.com/5iTech/articles/6043224.html