PyQt4 tutorial读书笔记(3)--layout management

Layout management in PyQt4

==》总述:布局管理是我们在窗口上摆放小部件的方式。这种管理方式可以用两种基本方法来做。
(1)绝对布局(2)layout classes

一、Absolute positioning

1、程序指定了每个控件的位置和大小(以像素为单位)。但当你使用绝对布局的时候,必须接受一些限制:
(1)如果我们调整了窗口的大小,控件的位置和大小不会改变.
(2)在不同平台上应用的显示可能不一样。
(3)在应用中改变字体可能会破坏布局
(4)如果我们决定修改布局,我们必须重做布局,这是非常无聊并且浪费时间。

lbl1 = QtGui.QLabel('first',self)
        lbl1.move(15,30)

        lbl2 = QtGui.QLabel('second',self)
        lbl2.move(25,60)

        lbl3 = QtGui.QLabel('third',self)
        lbl3.move(35,110)

        self.setGeometry(300,300,250,150)
        self.setWindowTitle('abslution')
        self.show()

二、layout classes

1、Box layout


class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        okButton = QtGui.QPushButton("OK")
        cancelButton = QtGui.QPushButton("Cancel")

        hbox = QtGui.QHBoxLayout()

        hbox.addWidget(okButton)
        hbox.addStretch(1)
        hbox.addWidget(cancelButton)

        vbox = QtGui.QVBoxLayout()

        vbox.addStretch(1)
        vbox.addLayout(hbox)

        self.setLayout(vbox)    

        self.setGeometry(300, 300, 300, 150)
        self.setWindowTitle('Buttons')    
        self.show()

(1) QtGui.QHBoxLayout 和 QtGui.QVBoxLayout是layout classes里面的两个基础类,用来控制控件水平或者垂直排列。
(2)

hbox.addWidget(okButton)
hbox.addStretch(1)
hbox.addWidget(cancelButton)

addWidget:在布局里面增加控件。
addStretch():我查了半天也不知道它怎么样使用最恰当,里面参数数字我改来改去也没啥变化,修改它在的位置,能够控制空白所在的地方。上面就是两个按钮之间。

vbox.addStretch(1)
vbox.addLayout(hbox)

这个就属于空白在hbox布局之上。这个空白就像弹簧,根据你其他控件的大小来填充。

2、QtGui.QGridLayout

text = QtGui.QTextEdit()


        hBox = QtGui.QHBoxLayout()

        hBox.addWidget(text)

        vBox = QtGui.QVBoxLayout()
        vBox.addLayout(hBox)

        grid = QtGui.QGridLayout()
        vBox.addLayout(grid)

        names = ['Cls', 'Bck', '', 'Close',
                 '7', '8', '9', '/',
                '4', '5', '6', '*',
                 '1', '2', '3', '-',
                '0', '.', '=', '+']

        positions = [(i,j) for i in range(5) for j in range(4)]

        for position,name in zip(positions,names):
            if name == '':
                continue
            btn = QtGui.QPushButton(name,self)
            grid.addWidget(btn,*position)

        self.setLayout(vBox)


        self.move(300,300)
        self.show()

这里写图片描述
弄了半天文本框和按钮大小还是弄不好,文本框高度过高,几乎两者是一半一半比例,不知道为啥,把文本框当成grid中一员,也没能成功让它高度减小。

==>果然还是不熟悉的原因,QtGui.QLineEdit(self)改成这个就是一行的文本框了。
(1)grid.setSpacing(10)
我们创建一个网格布局,设置组件之间的间距。
(2)grid.addWidget(reviewEdit, 3, 1, 5, 1)
如果我们将一个小部件添加到网格,我们可以提供小部件的行和列的跨度跨越。在我们的例子中,我们让reviewEdit部件跨度5行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值