1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

QtAdvent Calendar 2021

Day 9

PyQt5のチュートリアルを動かす ⑤ レイアウト管理

Last updated at Posted at 2021-12-01

はじめに

前回は,QtのSignalとSlotを動作させてみました。

今回はlayoutクラスについての導入です。

内容

qtのwidgetはsetGeometry(xpos, ypos, width, height)というメソッドをもちこれによってpixel単位の絶対座標位置を設定します。

以下の例では300x200ピクセルのウィンドウが(10,10)の位置に表示されます。

layout.py
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()

PushButtonWidgetはウィンドウの左から50ピクセル,上から20ピクセルの位置に設置されます。

しかしwindowのサイズ変更に対してボタンのサイズが変わったりしません。

Screenshot from 2021-12-01 20-03-17.png

Screenshot from 2021-12-01 20-03-06.png

そういった場合にlayoutクラスを使用するとWigetのサイズが動的に変化したり,移動したりするようになります。

そのクラスについてまとめると以下のようになります。

1.QBoxLayout:Widgetを垂直 or 水平に並べるクラス.
(※派生クラス→QVBoxLayout:垂直配置,QHBoxLayout:水平配置)
2.QGridLayout:行と列に配置されたグリッドセルのは位置ができる.addWidget()メソッドを持っていて行数、列数を指定して任意のwidgetを追加可.
3.QFormLayout:??

さいごに

layoutクラス内部にwidgetを配置すると,widgetが動的に変化してくれるようです。
windowから溢れたときに下に移動したりといった動きをしてくれるのでしょうか??
今後使っていければと思います。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?