yu00’s blog

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

レイアウトを使った配置

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

レイアウトとは

レイアウトはウィジェットを簡単に配置する仕組みです.
ウィジェットを横に並べたり,マス目に並べたりできます.
ウィジェットの位置は自動的に計算されるので,
自分でピクセルの位置を設定する必要はありません.

レイアウトの例

例として,ウィジェットを横に並べるQHBoxLayoutを使って
ボタンを3つ横に並べてみます.

サンプルコード

#! /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:20150902173318p:plain

このようにレイアウトを作成した後addWidgetを使いウィジェットを配置し,
setLayoutを使ってレイアウトをウィジェットにセットします.

レイアウトの組み合わせ

レイアウトを複数組み合わせることによって複雑なレイアウトを作ることができます.

例として,横に配置するQHBoxLayoutと縦に配置するQVBoxLayoutを
組み合わせてみます.

サンプルコード

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

import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, 
                             QHBoxLayout, QVBoxLayout)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    
    window = QWidget()

    button1 = QPushButton('1')
    button2 = QPushButton('2')
    button3 = QPushButton('3')
    
    # ボタン配置
    hbox = QHBoxLayout()
    hbox.addWidget(button1)
    vbox = QVBoxLayout()
    vbox.addWidget(button2)
    vbox.addWidget(button3)
    hbox.addLayout(vbox)
    
    window.setLayout(hbox)
    
    window.show()
    sys.exit(app.exec_())

実行例

f:id:yu00:20150902175819p:plain:h119

このようにaddLayoutを使うことでレイアウトに
別のレイアウトを追加できます.