yu00’s blog

プログラミングに関する備忘録です

QHBoxLayout・QVBoxLayoutクラス

PyQt5入門 PythonでGUI作成 - yu00’s blog

QHBoxLayout・QVBoxLayoutはウィジェット
横・縦に並べるクラスです.

ここではQHBoxLayoutを例に説明します.

横に並べる

addWidget(widget)

サンプルコード
#! /usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = QWidget()
    
    button1 = QPushButton('1')
    button2 = QPushButton('2')
    button3 = QPushButton('3')
    
    layout = QHBoxLayout()
    # レイアウトにウィジェットを追加
    layout.addWidget(button1)
    layout.addWidget(button2)
    layout.addWidget(button3)
    
    # ウィジェットにレイアウトをセット
    window.setLayout(layout)
    
    window.show()
    sys.exit(app.exec_())
実行例

f:id:yu00:20150917163322p:plain

ストレッチを設定しながら並べる

addWidget(widget, stretch=0)

layout.addWidget(button1, 2)
layout.addWidget(button2, 3)

f:id:yu00:20150917163751p:plain

また,追加するレイアウトにもストレッチを設定できます.

addLayout(layout, stretch=0)

vbox = QVBoxLayout()
layout.addLayout(vbox, 2)

表示位置を設定しながら並べる

alignmentを設定することで右寄せや下寄せができます.

addWidget(widget, stretch=0, alignment=0)

from PyQt5.QtCore import Qt
...
layout.addWidget(button1, alignment=(Qt.AlignBottom | Qt.AlignRight))

f:id:yu00:20150917191240p:plain

固定長の空白を入れる

addSpacing(size)

レイアウトの最後にストレッチしない
サイズがsizeの空白を追加します.

    layout.addWidget(button1)
    layout.addWidget(button2)
    # サイズが20の空白を追加
    layout.addSpacing(20)
    layout.addWidget(button3)

f:id:yu00:20150917164522p:plain

伸縮する空白を入れる

addStretch(stretch)

レイアウトの最後にストレッチがstretch
の空白を追加します.

    layout.addWidget(button1, 2)
    layout.addWidget(button2, 2)
    # サイズ1/2の空白を追加
    layout.addStretch(1)
    layout.addWidget(button3, 2)

f:id:yu00:20150917190227p:plain