Pyqt4学习笔记-布局

两种方式:绝对定位或使用布局类

绝对定位:用像素指定每个控件的位置和尺寸。使用绝对定位的话,适合窗口大小和内容固定的情况,因为调整窗口的大小,组件的位置不会跟着改变,而且如果有修改字体可能会造成显示差异,修改布局几乎等于完全重做。

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

import sys
from PyQt4 import QtGui

class Absolute(QtGui.QWidget):

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

        self.initUI()

    def initUI(self):
        label1 = QtGui.QLabel(‘Zetcode‘, self)
        label1.move(15, 10)

        label2 = QtGui.QLabel(‘tutorials for programmers‘, self)
        label2.move(35, 40)

        self.setWindowTitle(‘Absolute‘)
        self.resize(250, 150)

app = QtGui.QApplication(sys.argv)
a = Absolute()
a.show()
sys.exit(app.exec_())

布局类:基本的布局类是 QHBoxLayout 和 QVBoxLayout ,它们可以横向和纵向排列窗口组件。

框布局:假设想要摆放两个按钮到右下角,为了创建这样一个布局,需要一个水平框和一个垂直框。通过增加延展因素(addStretch)来创建必要的间隔。

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

import sys
from PyQt4 import QtGui

class FrameLayout(QtGui.QWidget):

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

        self.initUI()

    def initUI(self):

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

        hbox = QtGui.QHBoxLayout()
        # 创建一个水平框布局,增加两个按钮,剩下空白部分的按比例分布
        hbox.addStretch(1)
        hbox.addWidget(okButton)
        hbox.addStretch(5)
        hbox.addWidget(cancelButton)

        vbox = QtGui.QVBoxLayout()
        vbox.addStretch(1)
        vbox.addLayout(hbox)
        # 将水平框布局加入到垂直框布局中
        vbox.addStretch(1)

        self.setLayout(vbox)

        self.setWindowTitle(‘box layout‘)
        self.resize(300, 150)

app = QtGui.QApplication(sys.argv)
ex = FrameLayout()
ex.show()
sys.exit(app.exec_())

addStretch,表示剩下的空白处按比例填充,所以按钮处显示效果是1/6*总空白长+ok+5/6*总空白长+cancel:

时间: 2024-08-15 02:31:58

Pyqt4学习笔记-布局的相关文章

Android学习笔记-----------布局(四)

GridLayout(网格布局) 网格布局是android4.0之后出现的新布局,在使用可能会报错,需要将清单文件中的android:minSdkVersion设置为14 网格布局和LinerLayout一样具有水平方向和垂直方向两种布局方式.当控件排满后会自动换行或者换列. 使用前需要先指定rowCount(行数),columnCount(列数) 通过组件的layout_row和layout_column属性指定控件的行号和列号,这里要注意索引是从0开始的 通过组件的layout_column

Pyqt4学习笔记-事件和信号

调用应用的 exec_() 方法之后,应用进入主循环.主循环获取事件并把它们发往对象.应用在它的生命周期中产生的不同事件交互.事件主要由用户产生,但是它们也可以由其他方式产生,如:互联网,窗口管理器,定时器,当一个特殊的事件发生时,将发射信号,“槽 ”可以是任何Python调用,当链接到槽的信号发射,该槽将被调用. 在事件模型中,有三个参与者:event source:事件源,事件来源对象代理了事件的目标要处理的任务event object:事件对象,指状态改变的对象,它产生了事件. 事件对象

Pyqt4学习笔记-对话框(更新ing)

QInputDialog:可交互输入单个值的对话框.输入值可以是一个字符串,一个数字或者列表的一项. #!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui from PyQt4 import QtCore class InputExample(QtGui.QWidget): def __init__(self): super(InputExample, self).__init__() self.

Pyqt4学习笔记-菜单工具栏

显示状态栏: #!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore class MainWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.resize(250, 150) self.setWindowTitle('Mainwindow') self.statusB

Android学习笔记-----------布局(一)

LinearLayout(线性布局) 线性布局是android开发中的常用布局. 通过设置android:orientation属性来确定线性布局的方向,vertical为垂直方向,horizontal为水平方向. 由于布局的默认对齐方式是左上,若想设置控件的对齐方式,可以通过设置android:gravity属性和android:layout_gravity属性来确定控件的对齐方式. android:gravity属性是设置本元素中的子元素相对于它的对齐方式. android:layout_g

PyQt4学习笔记2014-11-25

Prentice.Hall.Rapid.GUI.Programming.with.Python.and.Qt.the.definitive.guide.to.PyQt.programming.2008.pdf 里面的例子实现. 第四章全部例子:window测试通过 图片和代码的顺序不是一致的,不过应该很容易看出来,然后有些例子做了一些改动,比如下面第一张图. 1 import sys 2 import time 3 from PyQt4.QtCore import * 4 from PyQt4.

《CSS网站布局实录》学习笔记(三)

第三章 CSS网页布局与定位 3.1 div 几乎XHTML中的任何标签都可以用于浮动与定位,而div首当其冲.对于其他标签而言,往往有它自身存在的目的,而div元素存在的目的就是为了浮动与定位. 3.1.1 div是什么 div是XHTML中制定的.专门用于布局设计的容器对象.在传统表格式布局中,之所以能够进行页面的排版布局设计,完全依赖于表格对象table.如今,接触另一种布局方式--CSS布局.div正是这种布局方式的核心对象.仅从div的使用上说,做一个简单的布局只需要依赖两样东西:di

《CSS网站布局实录》学习笔记(四)

第四章 CSS网站元素设计 4.1 网站导航 网站导航是网站中最重要的元素.从形式上看,网站导航主要分横向导航.纵向导航.下拉及多级菜单导航灯3种常见形式. 横向导航:作为门户网站的设计而言,主导航一般采用横向导航. 纵向导航:纵向导航更倾向于表达产品的分类. 下拉导航:主要用于功能复杂的网站. 总的来说,导航的核心目标就是设计一个简单.快捷的操作入口,帮助用户快速地到达网站中的 内容.这里将使用CSS来对这3种常见的导航进行设计. 4.1.1 横向导航 假设目前有6个频道,如果用传统的表格式布

Android学习笔记(九)——布局和控件的自定义

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! View是 Android中一种最基本的 UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件,因此,我们使用的各种控件其实就是在 View的基础之上又添加了各自特有的功能.而ViewGroup 则是一种特殊的 View,它可以包含很多的子 View和子 ViewGroup,是一个用于放置控件和布局的容器.系统默认的所有控件都是直接或间接继承自 View 的,所用的所有布局都是直接或间接继承自 Vie