はじめに
前回は,QtのSignalとSlotを動作させてみました。
今回はlayout
クラスについての導入です。
内容
qtのwidgetはsetGeometry(xpos, ypos, width, height)
というメソッドをもちこれによってpixel単位の絶対座標位置を設定します。
以下の例では300x200ピクセルのウィンドウが(10,10)の位置に表示されます。
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def window():
app = QApplication(sys.argv)
w = QWidget()
b = QPushButton(w)
b.setText("Hello World!")
b.move(50,20)
w.setGeometry(10,10,300,200)
w.setWindowTitle("PyQt")
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
window()
PushButton
Widgetはウィンドウの左から50ピクセル,上から20ピクセルの位置に設置されます。
しかしwindowのサイズ変更に対してボタンのサイズが変わったりしません。
そういった場合にlayout
クラスを使用するとWiget
のサイズが動的に変化したり,移動したりするようになります。
そのクラスについてまとめると以下のようになります。
1.QBoxLayout
:Widgetを垂直 or 水平に並べるクラス.
(※派生クラス→QVBoxLayout
:垂直配置,QHBoxLayout
:水平配置)
2.QGridLayout
:行と列に配置されたグリッドセルのは位置ができる.addWidget()
メソッドを持っていて行数、列数を指定して任意のwidgetを追加可.
3.QFormLayout
:??
さいごに
layoutクラス内部にwidgetを配置すると,widgetが動的に変化してくれるようです。
windowから溢れたときに下に移動したりといった動きをしてくれるのでしょうか??
今後使っていければと思います。
参考