PyQt4 Box布局

使用布局类别方式的布局管理器比绝对方式的布局管理器更加灵活实用。它是窗口部件的首选布局管理方式。最基本的布局类别是QHBoxLayout和QVBoxLayout布局管理方式,分别将窗口部件水平和垂直排列。

假设我们要将两个按钮放在窗口的右下角。为创建该布局,我们需要使用一个水平Box和一个垂直Box,另外为了创建必须的空白空间,我们还需要添加一个伸缩间隔元素(stretch factor)。

#!/usr/bin/python
# -*- coding:utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class BoxLayout(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self)
        self.setWindowTitle(‘box layout‘)
        ok = QtGui.QPushButton(‘OK‘)
        cancel = QtGui.QPushButton(‘Cancel‘)
        hbox = QtGui.QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(ok)
        hbox.addWidget(cancel)
        vbox = QtGui.QVBoxLayout()
        vbox.addStretch(1)
        vbox.addLayout(hbox)
        self.setLayout(vbox)
        self.resize(300, 150)

app = QtGui.QApplication(sys.argv)
box = BoxLayout()
box.show()
sys.exit(app.exec_())

效果:

ok = QtGui.QPushButton(‘OK‘)
        cancel = QtGui.QPushButton(‘Cancel‘)

以上两句用来创建两个按钮(OK和Cancel按钮)。

hbox = QtGui.QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(ok)
        hbox.addWidget(cancel)

以上四句用来创建一个水平box布局,然后加入一个伸缩间隔元素与两个按钮。

vbox = QtGui.QVBoxLayout()
        vbox.addStretch(1)
        vbox.addLayout(hbox)

为创建需要的布局,我们使用以上语句创建了一个垂直box布局并将水平box布局放入垂直box布局中。

self.setLayout(vbox)

最后我们设置窗口的主布局。

时间: 2024-11-09 06:55:17

PyQt4 Box布局的相关文章

PyQt4网格布局

最通用的布局类别是网格布局(QGridLayout).该布局方式将窗口空间划分为许多行和列.要创建该布局方式,我们需要使用QGridLayout类. #!/usr/bin/python # -*- coding:utf-8 -*- import sys from PyQt4 import QtGui class GridLayout(QtGui.QWidget): def __init__(self, parent = None): QtGui.QWidget.__init__(self) se

CSS3弹性伸缩布局(上)——box布局

布局简介 CSS3提供了一种崭新的布局方式:Flexbox布局,即弹性伸缩布局模型(Flexible Box)用来提供一个更加有效的方式实现响应式布局. 由于这种布局还处于W3C的草案阶段,并且它分为旧版本.新版本.混合过渡版本三种不同的编码方式.浏览器的兼容性存在一定的问题 首先,我们来看看旧版本的浏览器兼容情况 PS:这是网上的图,浏览器兼容信息可以通过该网站查询:http://www.caniuse.com 开始之前,我们先创建一段内容,分为三个区域 //HTML代码部分 <div> &

display:flex和display:box布局浏览器兼容性分析

display:flex和display:box都可用于弹性布局,不同的是display:box是2009年的命名,已经过时,用的时候需要加上前缀:display:flex是2012年之后的命名.在实际的测试中display:flex不能完全的替代display:box.display:flex的浏览器兼容性比较麻烦. 1.关于display:flex 对于响应式布局,使用flex很方便,但是它的兼容性也是一个值得考虑的问题. <div class="container">

Flexible Box布局基础知识详解

1.基本概念,借用阮一峰老师的一张图: 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis).主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end:交叉轴的开始位置叫做cross start,结束位置叫做cross end. 项目默认沿主轴排列.单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size. 2.容器的基本属性 flex-direction flex-wrap flex-flow j

flex box 布局

.box{ display:flex; } .box { display: inline-flex; } .box { display:-webkit-flex; display: flex; } flex-direction flex-wrap flex-flow justify-content align-items align-content 属性名称 row row-reverse column column-reverse flex-direction  主轴为水平方向,起点为左边 (

flex box布局

例如 <div class="container"> <div clas="left"></div> <div clas="center"></div> <div clas="right"></div> </div> flex box,有一个伸缩容器flex container 容器中的元素自动变成了伸缩项flex items,例子

Box布局管理

创建wx.BoxSizer对象时可以指定布局方向: hbox = wx.BoxSizer(wx.HORIZONTAL) 设置为水平方向 hbox = wx.BoxSizer() 默认就是就是水平方向的 vbox = wx.BoxSizer() 设置垂直方向 当需要添加子窗口或控件到父窗口时,需要调用wx.BoxSizer对象Add()方法,Add()方法是从父类wx.Sizer继承而来的,Add()方法语法说明如下: Add(windows,proportion=0,flag=0,border=

FLEX布局的一些问题和解决方法

前言 露珠最近研究了一下flex的布局方式,发现项w3c推出的这套布局解决方案对于日益复杂的前端开发布局来说是确实是一利器,并且在不同的屏幕上实现了真正的响应式布局:不再单纯地依赖百分比和float的强拼硬凑来达到设计需求,在各个屏幕上显示效果友好,弹性的伸缩元素,简洁易维护的代码.只可惜,这位老兄有一位致命的缺点----除了chrome外几乎所有手机上浏览器都没有兼容它!!,或者支持程度大不一样!这样开发人员头疼的问题就来了,刚刚在手机上忽略掉IE这个强盗的兼容问题,又来一个?!.flex的优

Android可伸缩布局-FlexboxLayout(支持RecyclerView集成)

Android可伸缩布局-FlexboxLayout(支持RecyclerView集成) 1 . 前言 前几天看到Google官方的博客介绍了Google开源的一个强大的布局-FlexboxLayout,看见第一眼我心里的想法是,卧槽,Android 居然有这么一个强大的布局.作为一个有好奇心的工程狮,当然第一时间就去试了试手,效果非常赞,因此这篇文章就介绍一下它的用法和最新版添加的一些特性(支持集成RecyclerView),Github地址:https://github.com/google