N900:Python:Qt:レイアウトサンプル
N900:Python:Qt:レイアウトサンプル †
Qtでのレイアウト指定のサンプルです。
絶対値指定のレイアウトサンプル †
絶対値で部品の位置を指定します。まずはソース。
#refpre(LayoutSample1.py,,1)
QLabelオブジェクト生成時に、第二引数にself(QWidgetオブジェクト)を指定します。
また、QLabelオブジェクトのmoveメソッドで位置を指定します。
13: label1 = QtGui.QLabel('Label1',self) 14: label1.move(30,30)
ボタンの場合も同様で、生成時の第二引数にselfを指定し、moveメソッドで位置を指定します。
31: button = QtGui.QPushButton('button1_dayo-', self) 32: button.move(400,40)
すると、こんな感じで表示されます。
Boxレイアウトを使ったレイアウトサンプル †
Boxレイアウトを使ったサンプルです。
#refpre(BoxLayoutSample?.py,,1)
ポイントは
- QVBOXLayout
- 箱の中を垂直方向に分割し、オブジェクトを配置
- QHBOXLayout
- 箱の中を水平方向に分割し、オブジェクトを配置
まあ、たとえばこんな感じで指定します。
17: hbox = QtGui.QHBoxLayout() 18: hbox.addStretch(1) 19: hbox.addWidget(label1) 20: hbox.addWidget(okButton) 21: hbox.addWidget(cancelButton)
軽く解説すると、こんな感じですわ。
- 17行目:QHBoxLayout?オブジェクトを生成します。
- 19行目~21行目:addWidgetメソッドでオブジェクトを追加します。
これらのオブジェクトは水平に配置されます。
また、このサンプルだと2つのHBOXを1つのVBOXに加えてます。
レイアウトオブジェクトにレイアウトオブジェクトを追加する場合はaddLayoutメソッドを使用します。
33: vbox = QtGui.QVBoxLayout() 34: vbox.addStretch(1) 35: vbox.addLayout(hbox) 36: vbox.addLayout(hbox2)
して、こんな感じで表示されます。
Gridを使ったレイアウトサンプル †
Gridレイアウトのアンプルです。まずはソース。
#refpre(GridLayoutSample?.py,,1)
Gridレイアウトの場合も、addWidgetメソッドで追加します。addWidgetメソッドの2,3番目の引数で位置を指定します。
ちなみに、第2引数がY軸、第3引数がX軸です。
27: grid = QtGui.QGridLayout() 28: i = 0 29: for j in labels: 30: button = QtGui.QPushButton(j) 31: grid.addWidget(button, position[i][0],position[i][1]) 32: i = i+1
このサンプルの場合は、事前に宣言しているオブジェクトからループで表示する内容を回してます。
して、こんな感じで表示されます。
Gridレイアウトのサンプル2 †
Gridレイアウトで、幅の指定とかできるみたいです。
※N900ではちょっと有効性が不明だったんですが、多分通常のLinux、Windowsでは正常に動作すると思われます。
#refpre(Gridlayoutsample2.py,,1);
24行目でスペースを10pt開ける指定をしてます。
24: grid.setSpacing(10)
また、幅の指定は33行目あたりがポイントです。
32: grid.addWidget(review,2,0) 33: grid.addWidget(reviewEdit,2,1,3,1)
addWidgetメソッドの引数に4番目、5番目を足すと、幅が指定できます。
ただ、この例+N900ではあまり有効には見えませんが、、、
画面はこんな感じです。
添付ファイル: Gridlayoutsample2.py 2094件 [詳細] Screenshot-20110514-154827.png 1994件 [詳細] Screenshot-20110506-221622.png 1946件 [詳細] GridLayoutSample.py 1994件 [詳細] Screenshot-20110514-221557.png 1941件 [詳細] BoxLayoutSample.py 2053件 [詳細] Screenshot-20110514-151343.png 1962件 [詳細] LayoutSample1.py 2006件 [詳細]