Pyqt4学习笔记-布局

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:

技术分享

以上是关于Pyqt4学习笔记-布局的主要内容,如果未能解决你的问题,请参考以下文章

Pyqt4学习笔记-菜单工具栏

Pyqt4学习笔记-事件和信号

学习笔记:python3,代码片段(2017)

PyQt4 Box布局

PyQt4网格布局

如何在 PyQt4 中将 QImage 插入到 NxN 网格布局中?